C语言程序复习题及参考答案 下载本文

7. 5 8. 3 10 14 9. 0 1 2 10. 52 11. 8467

四、完成程序:

1. (1) #include (2) n/100 (3) n 2. (1)while(i<=100) (2) i+=2

3. (1)while(ch!= '\\n') (2)if(ch<'9'&&ch>'0')

4. (1) count=0 (2)while(j!=0) (3)s=s+j 5. (1) s=s*i

6. (1)x=0 (2)x=x+j 7. (1) i+=2 (2)-t 8. (1) i (2)flag=-flag 9. (1) a*10+2 (2) s+a 10.(1) a*10+i (2) s+a

11.(1) i%3||i%5 (2) printf(“%d ”,i)

五、编程题:

1、编程实现:输入两个正整数m和n,求其最大公约数和最小公倍数。 main()

{ int m,n,temp,s;

printf(\ scanf(\ if(m

while(n!=0)/*利用辗除法,直到n为0为止*/ {

temp=m%n; m=n; n=temp; }

printf(\printf(\}

2、求1+2+4+6+??+100之和。分别用三种循环语句实现(while,do-while,for)。

(1) main( )

{ int i=2,sum=1; while (i<=100) { sum=sum+i; i=i+2;

}

printf(“sum=%d”, sum);

第 35 页 共 88 页

}

(2) main( )

{ int i=2,sum=1;

do

{ sum=sum+i; i=i+2;}while(i<=100);

printf(“sum=%d”, sum); }

(3) main( )

{ int i,sum;

for(i=2,sum=1;i<=100;i+=2)

sum=sum+i;

printf(“sum=%d”, sum); }

3、编写程序求2到100间的全部素数,要求每行输出5个数。

#include main()

{ int m,k,i,n=0;

for(m=2;m<=100;m+=2) { k=sqrt(m);

for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1)

{ printf(“]”,m); n=n+1;

}

if(n%5==0) printf(“\\n”); } }

4、编程输出九九乘法表。 #include \main() {

int i,j,result; printf(\

for (i=1;i<10;i++) { for(j=1;j<10;j++) {

result=i*j;

printf(\ \表示左对齐,占3位*/ }

printf(\每一行后换行*/ } }

5、编程求Fibonacci数列前20个数。这个数列有如下特点:第1、2两个数为1、1。 从第3个数开始,该数是其前面两个数之和。 main()

{long int f1=1,f2=1,f;

第 36 页 共 88 页

int i;

printf(“]] ”,f1,f2); for(i=3;i<=20;i++) { f=f1+f2;

printf(“]”,f); f1=f2; f2=f; } }

6、一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?

main() {

float sn=100.0,hn=sn/2; int n;

for(n=2;n<=10;n++) {

sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/ }

printf(\printf(\}

7、 编写程序,把100到200之间的能被3整除的数输出。 main() {int i;

for(i=100;i<=200;i++)

if(i%3= =0) printf(“]”,i); }

8、试编写程序输出100~300间的所能能同时被3和5整除的数。 main() {int i;

for(i=100;i<=300;i++)

if((i%3= =0)&&(i%5= =0) printf(“]”,i); }

9、 请编写程序解决如下数学计算问题:

一个整数被5除余3,被7除余5,被9除余7,这个数最小是几? main() {int i=8; while(1)

{if((i%5= =3)

if(i%7= =5)

if(i%9= =7) {printf(“]”,i); break;}

i=i+5; }

第 37 页 共 88 页

}

10、设计程序求自然数1~100(包含1和100)中所有素数的和。 #include main()

{ int m,k,i,s=0;

for(m=2;m<=100;m+=2) { k=sqrt(m);

for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) s=s+m; }

printf(“sum=%d”,s); }

11、编写程序,使用下面的公式求出e的近似值。 e≈1+

11111???????? (精确要求?10?6)

n!1!2!3!n!main()

{int i=1

float sum=1,t=1; while(t<1e6) {t=t*i;

sum=sum+1.0/t; i=i+1; }

printf(“%.2f”,sum); }

12. 求出所有的“水仙花数”并输出 main() {

int i,j,k,n;

for(n=100;n<1000;n++) {

i=n/100;/*分解出百位*/ j=n/10;/*分解出十位*/ k=n;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf(\ } }

第 38 页 共 88 页