1、一、选择题1. 设有如下程序段,则下面描述正确的是 int k=10;while (k=0) k=k-1;Awhile 循环执行 10 次 B循环是无限循环C循环体语句一次也不执行 D循环体语句执行一次2. 下面程序段的运行结果是 a=1; b=2; c=2;while(aint main()int a,b,t;scanf(“%d%d“,while( )if(ab) t=a;a=b;b=t;printf(“%d,%dn“,a,b);scanf(“%d%d“,return 0;A!a=b Ba!=b Ca=b Da=b8. 下面程序的功能是在输入的一系列正整数中求出最大者,输入 0 结束循环,请
2、选择填空。#includeint main()int a,max=0;scanf(“%d“,while( )if(maxint main()int num=0;while(numint main()int n,m=0;scanf(“%d“,for( ; n!=0; )m ;n/=10;printf(“%dn“,m);return 0;A+=n%10 B=n%10 C+=n D=n/1013. 以下程序段 。x=-1;do x=x*x;while(!x);A是死循环 B循环执行二次 C循环执行一次 D有语法错误14. 以下描述中正确的是 。Awhile、do-while 、for 循环中的循环体
3、语句都至少被执行一次Bdo-while 循环中,while(表达式)后面的分号可以省略Cwhile 循环体中,一定要有能使 while 后面表达式的值变为“假”的操作Ddo-while 循环中,根据情况可以省略 while15.下面程序的功能是计算正整数 2345 的各位数字的平方和,请填空。#include int main( ) int n=2345,sum=0;do sum=sum+ ;n= ;while(n);printf(“sum=%d”,sum);return 0;An%10 B(n%10)*(n%10)Cn/10 D(n/10)*(n/10)An/1000 Bn/100 Cn/1
4、0 Dn%1017. 下面程序的运行结果是 。#includeint main() int y=10;doy-;while(-y);printf(“%dn“,y-);return 0;A-1 B1 C8 D018.下面有关 for 循环的正确描述是 。Afor 循环只能用于循环次数已经确定的情况Bfor 循环是先执行循环体语句,后判断表达式Cfor 循环中,不能用 break 语句跳出循环体Dfor 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来19. 对 for(表达式 1; ;表达式 3)可理解为 。Afor(表达式 1;0;表达式 3) Bfor(表达式 1;1;表达式 3)
5、Cfor(表达式 1;表达式 1;表达式 3)Dor(表达式 1;表达式 3;表达式 3)20. 若 i 为整型变量,则以下循环执行次数是 。for (i=2; i= =0; ) printf(“%d”,i-);A无限次 B0 次 C1 次 D2 次21. 以下不是无限循环的语句为 。Afor(y=0, x=1; x+y; x=i+) i=x;Bfor( ; ; x+=i);Cwhile(1) x+;Dfor(i=10; ; i-) sum+=i;24. 下面程序的功能是求算式 xyz+yzz=532 中的 x,y,z 的值(其中 xyz 和 yzz 分别表示一个三位数) ,请选择填空。#in
6、clude int main( ) int x,y,z,I,result=532;for(x=1;xint main()int t,x;for(t=1;t=0 时什么也不输出Cprintf 函数永远也不执行D最多允许输出 100 个非负整数28. 下面程序的运行结果是 。#include int main( ) int a,b;for( a=1, b=1; a=20) break;if(b%3= =1) b+=3;continue;b - =5;printf(“%dn”,a);return 0;A7 B8 C9 D10答案:1. C 2. A 3. B 4. D 5. B 6. C A 7.
7、D C 8.B 9. C10. A 11. A 12. C 13. C 14. C 15. B C 16. B D 17. D18. D 19. B 20. B 21. A 22. D 23. B 24. C D 25. B26. D 27. C 28. B二、填空题1. 下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。int n=0, c;c=getchar( );while( ) if( ) n+;c=getchar( )3. 当运行以下程序时,从键盘键入 right?,则下面程序的运行结果是 。#includeint main()char c;while(c=
8、getchar( )!=?) putchar(+c);putchar(n);return 0;4. 下面程序的运行结果是 。#includeint main()int a=2,s=0,n=1,count=1;while(count=0);7. 下面程序段的运行结果是 。x=2;do printf(“*”); x-; while(!x= =0);8. 下面的程序的功能是用 do-while 语句求 11000 之间满足“用 3 除余 2,用5 除余 3,用 7 除余 2”的数,且一行只打印 5 个数,请填空。#include int main( ) int i=1,j=0;do if print
9、f(“%4d”,i);j+;if printf(“n”);i=i+1; while(i ”,则下面程序的运行结果是 。#includeint main() int k=0,n;doscanf(“%d“,k+=n;while(n!=-1);printf(“k=%d n=%dn“,k,n);return 0;10. 下面程序的运行结果是 。#includeint main()int i=0,x=0,y=0;do+i;if(i%2!=0) x=x+i;i+;y=y+i+;while(iint main()int i,t,s=0,q=1;for(i=1;iint main()int i;for(i=1
10、;iint main()int n=0,i,j,k;for(i=1;iint main() int n,k=1,s=0,m;for(n=1;ns) printf(“%5d“,n);printf(“n“);return 0;20. 若从键盘输入 65 14 ,则下面程序的运行结果是 。#includeint main()int m,n;printf(“Enter m,n:“);scanf(“%d%d“,while(m!=n)while(mn) m-=n;while(nm) n-=m;printf(“m=%dn“,m);return 0;21. 下面程序的功能是计算 100-1000 之间有多少个数其各位数字之和是 5。请填空。#includeint main() int i,s,k,count=0;for(i=100;i=a & c=A & c=1e-616. *#17. k+=2 j!=i & j!=k18. m=n m m/=1019. j=1 k=0 & k=620. m=121. k k/10 continue22. break k=10