}
else y=x*x-3*x+10; printf(\
习题5答案
选择题
1. A 2. A 3. D 4. C 5. D 6. A 7. D 8. D 9. B 10. C 阅读程序,写结果
11.1 -2 12.2 0 13.*** 14.2,4,6,8,10, 15.46.000000 16.852 17.利用近似公式???1?111???...求357π的值,直到最后一项的绝对值小于10为止。
-6
#include
#include
{ double pi=0,i=1,j=1,k; do {
k=i/j; pi=pi+k; i=-i; j=j+2;
}while (fabs(k)>1.0e-6); printf(\}
18.求两个数的最大公约数和最小公倍数。最大公约数:用大数整除小数,得到余数1; 再用小数整除余数1,得到余数2;再用余数1整除余数2,??直到余数为0。最小公倍数:两数相乘再除以最大公约数。 #include
{ int m,n,r,x,y;
scanf(\ x=m; y=n;
if (m { m=n; n=r; } printf(\the max common divisor is %d,the min common multiple is %d\} 19.从3个红球、5个白球、6个黑球中任意取出6个球,且其中必须有白球,编程输出所有可能的组合。 #include int i,j,k; printf(\ for(i=0;i<=3;i++) for(j=1;j<=5;j++) { k=6-i-j; if(k>=0) printf(\ } } 20.如果一个数等于其所有真因子(不包括该数本身)之和,则该数为完数。例如:6的真因子有1、2、3,且6=1+2+3,故6为完数。求[2,1000]内的: (1)最大的完数; (2)完数数目。 #include { int a,i,m,number=0,max=0; for(a=1;a<=1000;a++) { m=0; for(i=1;i<=a/2;i++) if(a%i==0) m=m+i; if(m==a) { number++, max=m;} } printf(\} 习题6答案 一、选择题 1.C 2.A 3.A 4.D 5.A 6.A 7.C 8.B 9.B 10.C 11.B 12.B 13.A 14.D 15.C 16.C 17.C 18.C 19.A 20.D 21.B 22.B 23.C 24.A 25.C 26.D 27.C 28.D 二、写出下列程序的运行结果 1.7 2.12 3.9 4.8,17 5.5 6 6.8,8 7.3 6 9 12 8.10 9.7 5 10.64 54 11.300 12.6 13.2 三、编程题(以下各题均用函数实现) 1.超级素数:一个素数依次从低位去掉一位、两位??若所得的数依然是素数,如239就是超级素数。试求100~9999之内: (1)超级素数的个数; (2)所有超级素数之和; (3)最大的超级素数。 解:(1)spn=30 (2)sps=75548 (3)spm=7393 #include { int i,s=0,k=0,m,max=100; for(i=9999;i>=100;i--) { m=i; while(m>1) if(fun(m))m=m/10; else break; if(m<=0) { if(max printf(\超级素数的个数为:],所有超级素数之和为:],最大的超级素数为]\\n\} int fun(int n) { int k,i; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1)return 1; else return 0; } 2.其平方等于某两个整数平方和的正整数称为弦数,例如因52=32+42,故5是弦数,求(121,130)这间的弦数个数以及最大和最小的弦数。 解:n=4 max=130 min=122 参考程序1(用函数方法实现): #include int k,maxnum,minnum; k=count(121,130); maxnum=max(121,130); minnum=min(121,130); printf(\弦数的个数为:%d,最大的弦数为:%d,最小的弦数为:%d\\n\} int count(int m,int n) { int i,j,k,t=0,flag; for(i=m;i<=n;i++) { flag=0; for(j=1;j if(flag==1)t++; } return t; } int min(int m,int n) { int i,j,k,t=0; for(i=m;i<=n;i++) for(j=1;j printf(\最小的弦数为:M\\n\ return i; } } int max(int m,int n) { int i,j,k,t=0; for(i=n;i>=m;i--) for(j=1;j 3.有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。 解:384 #include int i,t; t=fun(8); for(i=1;i<8;i++) t=t*2; printf(\} int fun(int m) { int i,j,n=1,sum; for(i=1;i<=765;i++) { sum=i; n=i; for(j=1;j sum=sum+n; } if(sum==765) break; } return i; } 4.编写程序,求?n!的结果。 110解:4037913 参考程序1: #include