当前位置:文档之家› C语言练习2(选择和循环结构)

C语言练习2(选择和循环结构)

C语言(分支和循环结构)一、选择题1.以下程序输出结果是( )main(){ int m=5;if(m++>5) printf("%d\n",m);else printf("%d\n",m--);}A)7 B)6 C)5 D)42以下程序的输出结果为( )# include <stdio.h>main ( ){ int i=0, j=0, a=6;if ((++i>0)&&(++j>0)) a++;printf ("i=%d, j=%d, a=%d\n", i,j,a);}A) i=0, j=0, a=6 B) i=1, j=1, a=7C) i=1, j=0, a=7 D) i=0, j=1, a=73有如下程序main(){ int a=2,b=-1,c=2;if(a<b)if(b<0) c=0;else c++;printf("%d\n",c);}该程序的输出结果是( )4若i为int型,且有程序如下,则输出结果是( )i=111;if(i%3==0)printf("####");printf("****");A) #### B) **** C) ####**** D) 无输出结果5若运行时x=12,则运行结果为( ){int x, y;scanf("%d", &x);y=x>12 ? x+10:x-12;printf("%d\n", y);}A) 0 B) 22 C) 12 D) 106以下程序的输出结果是( )main(){ int i=0, j=0, k=6;if ((++i>0)||(++j>0)) k++;printf("%d, %d, %d\n", i, j, k);}A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 77若变量都已正确说明,则以下程序段输出为( )int a=1,b=2,c=3;if(a>b)a=b;b=c;c=a;printf("a=%d b=%d c=%d\n",a,b,c);C)a=1 b=3 c=1 D)a=2 b=3 c=28当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( ) if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;else x=3;else x=6;else x=7;A) 1 B)2 C)3 D)69以下不正确的语句为( )A)if(x>y);B)if(x==y)&&(x!=0)x+=y;C)if(x!=y)scanf("%d",&x);else scanf("%d",&y);D)if(x<y){x++;y++;}10有以下程序:#include"stdio.h"main( ){char i;for (; (i=getchar ())!='\n';){switch (i-'a'){case 0: putchar (i);case 1: putchar (i+1);break;case 2: putchar (i+2);case 3: break;default: putchar (i);break;}printf ("\n");}输入下列数据后,程序的输出结果是( )abcde<CR>A) abcde B) abceeC) abbde D) abccdd11若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是( ) A) switch(a+b); B) switch(a*a+b*b){ case 1:y=a+b; break; {case 3:case 0:y=a-b; break; case 1:y=a+b;break;} case 3:y=b-a,break;}C) switch a D) switch(a-b){ case 1 :y=a-b; break {case 2: x=a*d; break case c1:case 4:x=a+b;break; default:x=a+b; case c2:case 11:y=a-b;break; } default:y=a*b;break;}12写出下面程序输出结果( ){int x=1, y=0, a=0, b=0;switch(x){case 1:switch(y){case 0: a++;case 1: b++; }case 2: a++; b++;}}A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=213 C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。

但当三个表达式均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。

A) < B) ++ C) ; D) ,14下面有关for循环的正确描述是( )。

A) for循环只能用于循环次数已经确定的情况B) for循环是先执行循环体语句,后判定表达式C) 在for循环中,不能用break语句跳出循环体D) for循环体语句中,可以包含多条语句,但要用花括号括起来15以下程序段( )。

x=-1;do{ x=x*x;}while(!x)A) 是死循环 B) 循环执行2次 C) 循环执行一次 D) 有语法错误16设有程序段int k=10;while(k=0) k=k-1;则下面描述正确的是( )。

A) while 循环执行10次B) 循环是无限循环C) 循环体语句一次也不执行D) 循环体语句执行一次17下列程序段的运行结果是( )int n=0;while(n++<3);A. 2B. 3C. 4D. 以上都不对18设有程序段t=0;while(printf("*"));{ t++;if (t<3) break;}下面描述正确的是( )。

A) 其中循环控制表达式与0等价B) 其中循环控制表达式与'0'等价C) 其中循环控制表达式是不合法的D) 以上说法都不对19 下面程序的运行结果是( )。

#include <stdio.h>main(){ int y=10;do { y--;} while(--y);printf("%d\n",y--);}A) -1 B) 1 C) 8 D) 020以下程序段的输出结果是( ).main(){ int i=5;for ( ;i<=15; ){ i++;if (i%4==0) printf("%d ",i);else continue;}}A. 8 12 16B. 8 12C. 12 16D. 821以下不是无限循环的语句为( )。

A) for(y=0,x=1;x>++y;x=i++) i=x;B) for( ; ;x++=i);C) while(1){x++;}D) for(i=10; ; i--) sum+=i;22有如下语句int x=3;do{ printf("%d\n",x-=2);} while(!(--x));则上面程序段( )A. 输出的是1B. 输出的是1和-2C. 输出的是3和0D. 是死循环23 以下正确的描述是( )。

A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句内使用break语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句24以下程序输出结果为( )#include "stdio.h"main(){int i,b,k=0;for(i=1;i<=5;i++){ b=i%2;while (b-->=0) k++;}printf("%d,%d\n",k,b);}A. 3,-1B. 8,-1C. 3,0D. 8,-225以下程序段中循环体总的执行次数是( )int i,j;for(i=7;i;i--)for(j=0;j<6;j++){......}A) 42 B) 21 C) 13 D) 3626以下不正确的描述是( )A. break 语句不能用于循环语句和switch语句外的任何其他语句B. 在switch语句中使用break语句或continue语句的作用相同C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环二、判断题1 else语句总是和靠它最近的if匹配。

2 switch语句中一定有default分支。

3 case后只能跟常量,不能跟变量。

4 break语句的作用就是结束本层循环。

5 do-while语句构成的循环不能用其它语句构成的循环来代替。

6 用do-while语句构成循环时,只要while后的表达式为0时就结束循环。

7 for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。

8 for循环中,如果表达式2为空,则该循环一定是死循环。

9 while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。

10 for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50。

三、填空题1若a、b均为int型变量,且a=100,则以下的for循环是【】循环.执行语句:for(i=1;i++<4;++i);后;变量i的值是【】。

2以下程序的运行结果是【】main(){int x,y,z;x=1;y=2;z=3;x=y--<=x||x+y!=z;printf("%d,%d",x,y);}3以下程序的运行结果是【】main(){int x,y,z;x=1;y=1;z=0;x=x||y&&z;printf("%d,%d",x,x&&!y||z);}4以下程序的运行结果是【】main(){int a,b,c;int s,w=0,t=5;a=-1;b=3;c=3;if(c>0)s=a+b;if(a<=0){if(b>0)if(c<=0)w=a-b;}else if(c>0)w=a-b;else t=c;printf("%d,%d,%d\n",s,w,t);}5阅读下面程序:{ int s, t, a, b;scanf("%d%d",&a, &b);s=1;t=1;if(a>0) s=s+1;if(a>b) t=s+t;else if (a==b) t=5;else t=2*s;printf("s=%d, t=%d", s, t);}为了使输出结果t=4, 输入量a和b应满足的条件是【】6 下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。

相关主题