习题五
1、 请画出例5.6中给出的3个程序段的流程图。
2、 请补充例5.7程序,分别统计当“fabs(t)>=1e-6”和“fabs(t)>=1e-8”时,执行循
环体的次数。
3、 输入两个正整数m和n,求其最大公约数和最小公倍数。 答:程序代码如下: #include
int p,r,n,m,temp;
printf(\请输入两个正整数n,m:\ scanf(\ if (n temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } printf(\它们的最大公约数为:%d\\n\ printf(\它们的最小公倍数为:%d\\n\ return 0; } 程序结果如下: 4、 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 答:程序代码如下: #include 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\\n空格数:%d\\n数字数:%d\\n其它字符数:%d\\n\ return 0; } 程序结果如下: 5、 求Sn=a+aa+aaa+aaaa+?+aa?a之值,其中a是一个数字,n表示a的位数,例如: 2+22+222+2222+?22222(此时n=5)n由键盘输入。 答:程序代码如下: #include int a,n,i=1,sn=0,tn=0; printf(\ scanf(\ while (i<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++i; } printf(\ return 0; } 程序结果如下: 6、 求 (即求1!+2!+3!+4!+?+20!)。 ?n!n=120 答:程序代码如下: #include double s=0,t=1; int n; for (n=1;n<=20;n++) { t=t*n; s=s+t; } printf(\ return 0; } 7、 求 1。 k?k????kk?1k?1k?121005010答:程序代码如下: #include {int n1=100,n2=50,n3=10; float k; float s1=0,s2=0,s3=0; for(k=1;k<=n1;k++) s1=s1+k; for(k=1;k<=n2;k++) s2=s2+k*k; for(k=1;k<=n3;k++) s3=s3+1/k; printf(\} 程序结果如下: 8、输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该输本身。例如,153是一水仙花数,因为153=13+53+33。 答:程序代码如下: #include { int i,j,k,n; printf(\“水仙花”数是:\ for(n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n; if(n==i*i*i+j*j*j+k*k*k) printf(\ } printf(\} 程序结果如下: 9、 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,,3, 而6=1+2+3,因此6是“完数”。编程序找出1000之内的的所有完数,并按下面格式输出其因子: 6 its factors are 1,2,3 答:程序代码如下: #include 程序结果如下: 10、 有一分数数列 23581321,,,,,,??? 1235813求这个数列的前20项之和。

