完美WORD格式
t=2*t; }
printf(\ }
2.求s=1+1/2+1/3+…+1/100的值。
【分析与提示】本题为分数数学项求和问题,要想得到每一项的正确结果,分式中的分子、分母至少要有一个为实型数据。
参考代码: main( )
{int i;
float s=0,t;
for(i=1;i<=100;i++) { t=1.0/i;
s=s+t;
}
printf(\ }
3.求T=1!+2!+3!+…+10!的值。
【分析与提示】本题为数学项求和问题,数学项间的关系为:第n项的值为第n-1项的n倍。参考代码: main( ) {
long int t=0,tn=1; int i;
for(i=1;i<=10;i++) { tn=i*tn;
t=t+tn;
}
printf(\ }
4.求s=2/1+3/2+4/3+5/4+…+22/21的值。
【分析与提示】请抓住分子与分母的变化规律。 参考代码: main( ) {
int m;
float s=0,n=2.0; for(m=1;m<=21;m++) { s=s+n/m;
n=n+1;
}
printf(\ }
5.输入一行字母,分别统计其中的英文字母、空格、数字和其他字符的个数。
专业整理 知识分享
完美WORD格式
【分析与提示】利用while语句,条件为输入的字符不为'\\n'. 参考代码:
#include \main( ) {
char c;
int letters=0,space=0,digit=0,other=0; printf(\请输入一行字符:\\n\ while((c=getchar())!=’\\n’)
{ if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)
letters++; else if(c==’ ’) space++;
else if(c>=’0’&&c<=’9’) digit++; else other++; }
printf(\字母数=%d 空格数= %d 数字数=%d 其它字符数=%d\\n\ }
6.求100以内能被8整除的数,并求它们的和。
【提示】判断一个数m能否被n整除的方法是:将m对n取余数,若余数为0,则为整除。
参考代码: main( )
{
int n,s=0;
for(n=1;n<=100;n++) if(n%8==0)
{s=s+n;
printf(\ }
printf(\ }
7.打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其中各位数字的立
333
方和等于该数本身。例如153=1 +5 +3 。
【分析与提示】利用for 循环控制100~999 个数,每个数分解出个位,十位,百位。 参考代码: main( ) {
int i,j,k,n;
printf(\水仙花数是: \
for(n=100;n<1000;n++) {i=n/100;
专业整理 知识分享
完美WORD格式
j=n/10-i*10; k=n;
if(n= =i*i*i+j*j*j+k*k*k) printf(\
}
printf(\ }
8.以下面的格式,输出九九乘法表。 1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9 … … …
1*9=9 2*9=18 3*9=27 …9*9=81
【提示】分行与列考虑,共9行9列,利用双重for 循环,外循环i控制行,内循环j控制列。参考代码:
main( ) {int i,j;
for(i=1;i<10;i++)
{ for(j=1;j<=i;j++)
printf(\
printf(\ } }
9.用for循环打印输出以下图案。
* * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
(图形a) ( 图形b)
输出图形a程序代码: #include \main( ) {
int i,j,k;
for(i=0;i<4;i++) /*控制打印行数*/ {
for(j=0;j<10+i;j++) /*控制空格输出位置*/ printf(\
for(k=0;k<4;k++) /*控制每行*的输出个数*/ printf(\ printf(\ }
专业整理 知识分享
完美WORD格式
}
输出图形b序代码: #include “stdio.h” main( ) {
int i,j,k;
for(i=0;i<4;i++) /*控制打印行数*/ {
for(j=0;j<3-i;j++) /*控制空格输出位置*/
printf(“ ”);
for(k=0;k<2*i+1;k++) /*控制每行*的输出个数*/ printf(“*”); printf(“\\n”); }
}
10.猴子吃桃子问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上再想吃时,见只剩一个桃子了。求第一天共摘了多少个桃子。
【提示】采取逆向思维的方法,从后往前推断。参考代码: main( )
{ int day,x1,x2; day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1; day--; }
printf(\桃子总数=%d\\n\ }
11.求出500以内所有素数。
【提示】判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表 明此数不是素数,反之是素数。
参考代码:
#include \
main( )
{int m,k,i,n=0; for(m=2;m<=500;m++)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break; if(i>=k+1)
专业整理 知识分享
完美WORD格式
{ printf(\n=n+1; if(n==0) printf(\} }
printf(\
}
12.输入一个整数(0~99999),判断它的位数,并重新组合成同样位数的最大值。如,输入1345,输出5431。
【提示】先求出该整数的位数;其次分解出每一位数(个位、十位、百位、千位、万位);接着将5个位数进行排序;最后根据整数的位数重新组合成同样位数的最大值。
参考代码:
main( )
{long int num, t,d1,d2,d3,d4,d5,n;/*分别代表个位,十位,百位,千位,万位和位数*/
printf(\请输入一个整数(0~99999):\scanf(\if(num>9999) n=5; else if(num>999) n=4; else if(num>99) n=3; else if(num>9) n=2; else n=1;
printf(\d5=num/10000;
d4=(num-d5*10000)/1000; d3=(num-d5*10000-d4*1000)/100; d2=(num-d5*10000-d4*1000-d3*100)/10; d1=num-d5*10000-d4*1000-d3*100-d2*10; if(d5 {t=d5;d5=d4;d4=t;} if(d5 {t=d5;d5=d3;d3=t;} if(d5 {t=d5;d5=d2;d2=t;} if(d5 {t=d5;d5=d1;d1=t;} if(d4 {t=d4;d4=d3;d3=t;} if(d4