C语言程序设计习题集第4章 循环结构(答案)
rintf(x%2)?(“*%d”):(”#%dn”),x);A)*3#4 B)#3*5 *4#5C)#3*0、执行下面程序片段的结果是(A )。int x;for(x=3;x6;x+)p*4 D)*3#4*5 #521、有以下程序,执行后输出的结果是(A )。main() int i;for(i;后,变量i的值是(C )A)0 B)10 C)-1 D)12=0;i3;i+)switch(i) case 1: printf(%d,i);case 2: printf(%d,i);C) 死循环 D) 019、执行语句for(i=3;i0;i-);i- default: printf(%d,i);A) 011122 B) 012 C) 012020 D) 12022、有以下程序,程序运行后的输出结果是tf(“%dn”,sum);该程序的执行结果是(C)A) 6 B) 3(C )。main() int k=4,n=0;for( ; nk ; ) n+;if(n%3!=0) continue;k-;printf(%d,%dn,k,n);A)1,1 B)2,2 C int i,sum=0;for(i=1;i=3;sum+) sum+=i;prin)3,3 D)4,423、设变量已正确定义,则以下能正确计算f = n!的程序段是(D )A) f=0 ;for(i=1;i=n;i+) f*=i; B) f=1; f+=i;printf(“%dn”,sum);18、有如下程序main()or(i=1;in;i+) f=f*i;C) f=1; for(i=n;i1;i+) f*=i; D) f=1;for(i=n;i=2;i-) f*=i;main() int i , sum;for(i=1;i6;i+) sum24、执行下面程序片段的结果是(B )。main()int a,b;for(a=1,b=1;a=100;a+)if(b=20)bre执行后sum的值是( C)A)15 B)14C) 不确定 D)0ak;if(b%3= =1)b+=3;continue;b-=5;printf(“41 B)963 C)852 D)87542117、以下程序%dn”,a);A)7 B)8 C)9 D)1025、以下程序的输出结果是( B )。main() int i=0,a=0;while(i20) for(;) if(i%10)=0) break;=0 ) printf(%d , -y) ;程序的运行结果是(C)A) 7 else i-;i+=11; a+=i;printf(%dn,a);A) 21 B) 32 C) 33 ()int y=9 ;for( ; y0 ; y-)if(y%3 D) 1126、以下程序的输出结果是(A )main() int i,j,x=0; C)A) 3 B) 4 C) 5 D) 不定16、有以下程序main for(i=1;i2;i+) B)0次 C)1次 D)2次15、执行语句for(i=1;i+4;)后,变量i的值是( x+;for(j=0;j=3;j+ ) if(j%2) continue;x+;x+;printf(“x=%dn”,x);A)x=4 B) x=8是(B)for(i=2;i= =0;) printf(“%d”,i-);A)无限次 C) x=6 D)x=12 27、有以下程序main() int i,j;for(i=3;i=1;i-) for(j=1;j=2;D) for(n=0,i=1; ;i+)n+=i;14、若i为整型变量,则以下循环执行的次数j+) printf(%d,i+j);printf(n ) ;程序的运行结果是(D)A) 2 3 4 B)4 3 2 C)2 3 D)4 53 4 5 5 4 3 0;while(1)n+;C) n=10;while(n);n-;3 4 3 44 5 2 328、有以下程序main() int i语句或语句组是(A)A) n=0;do +n;while(n0);B) n=5;do if(i%3=1)if(i%5=2) printf(*%d,i); break; 5或者n的值小于3D) P的值等于12345或者n的值大于等于3 13、以下不构成无限循环的 x=y;y=z;z=x/y;elsebreak;printf(“%fn”,y);A)1.500000 B)1.600000 C)2.000000 D)2.4000009、执行以下程序段时x=-1;do x=x*x; while(! x);则下面描z=x/y;while(1)if(fabs(z)1.0)述正确的是(A )A) 循环体将执行一次 B) 循环体将执行两次C) 循环体将执行无限次 D) 系统将提示有语法错误10、有以下程序段其输出结果是(C ) int x=3;do printf(%d,x-=2); while (!(-x);A) 1 B) 3 0 C) 1 -D) 死循环。main()float x,y,z;scanf(“%f%f”,&x,&y);11、有如下程序 main() int x=23;do printf(“%d”,x);x-;while(!x);该程序的执行结果是(B )A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环12、有以下程序段int n=0,p;doscanf(“%d”,&p);n+;while(p!=1 348、有以下程序,若运行时输入3.6 2.4回车,则输出的结果是( B)2345 &n3);此处dowhile循环的结束条件是( D)A) P的值不等于12345并且n的值小于3B) P的值等于12345并且n的值大于等于3C) P的值不等于1234 i+; while(i!=0);printf(n);程序的运行结果是(A)A) *7 B)*3*5 C)*2 2 23 5 D)*2*629、以下程序的结果是(A)main() int n;for(n=1; ; )if(+n%2=0) continue;if(+n%3=0) break; printf(n=%d,n);A)n=6 B)n=5 C)n=4 D)死循环30、以下叙述中正确的是 (C)A)brum);A) 1 B) 1 C)1 D) leak语句只能用于switch语句题中B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环C)break 语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同二、程序阅读题(共10题)1、以下程序运行后的输出结果是 52 。main() int i=10, j=num= 0;while(num=2) num+; printf(“%dn”,n0;do j=j+i; i-;while(i2);printf(“%dn”,j);2、设有以下程序:main() int n1,n2;scanf(“%d”,&n2);while(n2!=0) n1=n2%10;n2=n2/10;printf(“%d”,n1);98767、以下程序的输出结果是 ( B )main() int 程序运行后,如果从键盘上输入1298;则输出结果为 8921 。3、以下程序的输出结果是 5 。main() int s,i;for(s=0,i=1;i3;i+,s+=i);printf(%dn,s);4、阅读下面程序,程序的结果是 2,1,0 。main()int i=7;的输出结果是(B)A) 987 B) 876 C) 8765 D)for(i=2;i0;i-)printf(”%d,”,i);printf(”%d”,i);5、阅读下面程序,程序的结果是 14,4 。main() int i,j,m=0;for(i=2;i=10;i+=4)for(j=3;j=4;j+)m+;i+;t n=9;while(n6)n-;printf(“%d”,n);该程序段 printf(%d,%d,i,m);6、阅读下面程序,程序的结果是 1978 。main()int j,a=2,n=4;long s=0,t=0;for(j=0;jn;j+)t=t*10+a;s=t;for(j=1;jn-1;j+)t=t/10;s=s-t;printf(”%d”,s);7、以下程序运行后的 B)5 C)10 D)死循环6、有如下程序main() in输出结果是 0918273645 main()char c1,c2;for(c1=0,c2=9;c1c2;c1+,c2-)printf(%c%c,c1,c2);printf(n);8、以下程序的输出结果是 5 。main() int s,i;for(s=0,sum=sum+i;i=i+1;printf(“%dn”,sum);A)4i=1;i3;i+,s+=i);printf(%dn,s);9、执行其各位数字之和。比如输入整数31421,则打印结果为11。请填空。main()int iprintf(n);8、以下程序实现:从键盘输入一位整数,计算 s=s+1;if( s%5=0 ) printf(n);if(j=i) printf(%5d, i);*n)现在请你在下面的函数中填空,完成求的功能。 main() double s=0.0; long i,n;scanf(“%ld”,&n);for(i=1;i=根据以下近似公式求值:(*)/6=1+1/(2*2)+1/(3*3)+.+1/(niy;i+) z=z* y ;return z;6、以下程序的功能是n;i+) s=s+ 1.0/(i*i) ;printf(“%lf”,sqr int y) int i;double z;for(i=1, z=x; t(6*s);7、以下用来输出两整数M和N之间的所有素数(质数),请填空,使程序能正;5、以下函数的功能是:求x的y次方,请填空。double fun( double x,个整数。for(i=0;i= 18 ;printf(“%dn”,i+=2)确运行。#define M 4#define N 30main() int printf(s=%dn,s);4、要使以下程序段输出10个整数,请填入一i, j, k, s=0;for(i=M; i= N ; i+)for( i=1; i=5; i+) t=i+ t*10 ; s=s+t;+12+123+1234+12345。请填空。main() int t=0,s=0,i;for(j=2; j i ; j+)if(i%j= 0 ) breaks+fac;printf(“s=%lf”,s);3、以下程序的功能是计算:s=1,sum=0,a;scanf(%d,&i);while(i0)a= i);for(i=1,i=n;i+) fac=fac * 1.0/i ;s=ble s=0.0,fac=1.0; int i;int n;scanf(“%d”,&n%10 ;sum+=a;i= i/10 ;printf(+1/2!+1/3 ! +1/4 !+1/n! ,请填空。main( ) dou%dn,sum);9、以下程序实现:计算110之间(不含10)的奇数之和以及偶数之和 ;printf(“m=%d”,m)2、以下程序的功能是计算s=1main()int a,b,i;a=b=0;for(i=0;&n);for(i=1; i=n; i+) m+=i*f;f= -f果。请填空。main( ) int m=0,f=1,i,n;scanf(“%d”,i10;i+=2)a= a+i ;b= bx);三、 程序填空题1、以下程序的功能是计算:m=1-2+3-4+9-10,并输出结+i+1 ;printf(偶数为:%d,奇数和为:%dn,a,b);if(j%2) continue;x+;x+;printf(“x=%dn”,for(i=1;i2;i+) x+;for(j=0;j=3;j+ ) 10、以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填10、以下程序的输出结果是 x=4 main() int i,j,x=0; 空。 main() int i,j; for(i=0; i10 1; i5; i+)for(j=2; j=i; j+) putchar(#);以下程序后,输出#号的个数是 6 。main() int i,j;for(i=;i+) j=i*10+6; if( j%3=0 ) continue的输出结果是(D )。main() int i=1,sum=0;while(i=4); printf(“%d ”,j); 四、 编程题1、 写一个程序,程序,sum);A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后=4)sum=sum+i;i=i+1;printf(“%dn”的功能是:从键盘输入一个整数m,输出1到m(含m)能被7或11整除的所有整数,并计算出这些数的个序运行后的输出结果是(C )。main()int i=1,sum=0;while(i数。例如:如果m为50,则程序输出7、11、14、21、22、28、33、35、42、44、49A) m=0 B) m!=0 C) m=1 D) m!=14、有以下程序,程D) 以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是 (B )共11个数。2、计算100到1000间有多少个数其各位数字之和是5。3、从键盘输入整数n,输)A) 循环控制表达式的值为0B) 循环控制表达式的值为1C) 循环控制表达式不合法出1+3+5+7+前n项的和(输入的n=10)4、编写程序,实现如下图形1121的循环之前,t的值为0while( t=1) 则以下叙述中正确的是 ( B法错,不能执行C) 一次也不执行 D) 执行1次2、t为int类型,进入下面231234123455、打印100-999以内所有满足条件的数。条件为,这个数等于其个+;while 循环执行的次数是( A)A) 无限次 B) 有语位数,十位数,百位数立方和,如153=1*1*1+5*5*5+3*3*3第4章 循环结构一、 选择题1、有以下程序段int k=0;while(k=1)k