C语言程序设计第四版第五章答案谭浩强.docx
文本预览下载声明
第五章 循环控制
5.3输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{long m,n,i=1,j,s;
scanf(%ld,%ld,m,n);
for(;i=mi=n;i++)
{if(m%i==0n%i==0) s=i;}
if(m=n) j=m;
else j=n;
for(;!(j%m==0j%n==0);j++);
printf(s=%ld,j=%ld\n,s,j);
}
5.4输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#includestdio.h
main()
{char c;int i=0,j=0,k=0,l=0;
while((c=getchar())!=’\n’)
{if(c=65c=90||c=97c=122) i++;
else if(c=48c=57) j++;
else if(c==32) k++;
else l++;}
printf(i=%d,j=%d,k=%d,l=%d\n,i,j,k,l);
}
5.5求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。
#includemath.h
main()
{int n,sum=0,i=1,s=2;
scanf(%d,n);
while(i=n)
{sum=sum+s;s=s+2*pow(10,i);
i++;}
printf(sum=%d\n,sum);
}
5.6求 ,(即求1!+2!+3!+4!+5!+…+20!)
main()
{int n,i=1;long sum=0,s=1;
scanf(%d,n);
while(i=n) {s=s*i;sum=sum+s;i++;}
printf(sum=%ld\n,sum);
}
5.7求
main()
{double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum;
for(;i=100;i++) s1=s1+i;
for(;j=50;j++) s2=s2+j*j;
for(;k=10;k++) s3=s3+1/k;
sum=s1+s2+s3;
printf(sum=%f\n,sum);
}
5.8打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。
#includemath.h
main()
{int x=100,a,b,c;
while(x=100x1000) {a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;
if(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf(%5d,x);x++;}
}
5.9一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子:
6 its factors are 1、2、3
main()
{int m,i,j,s;
for(m=6;m10000;m++)
{s=1;
for(i=2;im;i++)
if(m%i==0) s=s+i;
if(m-s==0)
{printf(%5d its fastors are 1 ,m);for(j=2;jm;j++) if(m%j==0)
printf(%d ,j);printf(\n);}
}
}
或
main()
{int m,i,j,s;
for(m=6;m1000;m++)
{s=m-1;
for(i=2;im;i++)
if(m%i==0) s=s-i;
if(s==0)
{printf(%5d its fastors are 1 ,m);for(j=2;jm;j++) if(m%j==0)
printf(%d ,j);printf(\n);}
}
}
5.10有一分数序列:
求出这个数列的前20项之和。
main()
{int i=1,n;double t,x=1,y=2,s,sum=0;
scanf(%ld,n);
while(i=n) {s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}
printf(%f\n,sum);
}
5.11一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?
main()
{int i,n;dou
显示全部