C语言第四章选择结构程序设计期末测试习题与答案
1、下列条件语句中,功能与其他语句不同的是 ( )。
A.if(a==0) prinff("%d\n",y); else printf("%d\n",x);
B.if(a) printf("%d\n",x); else prinf("%d\n",y);
C.if(a!=0) printf("%d\n",x); else printf("%d\n",y);
D.if(a==0) printf("%d\n",x); else printf("%d\n",y);
参考答案:D
2、假定所有变量均已正确说明,下列程序段运行后x的值是( )。
a=b=c=0;x=12; if(!a)x--; else x=5; if(c) x=3; else x=4;
A.3
B.4
C.12
D.11
参考答案:B
3、下列叙述中正确的是 ( )。
A.在switch语句中,不一定使用break语句
B.在switch语句中必须使用default
C.break语句只能用于switch语句
D.break语句必须与switch语句中的case配对使用
参考答案:A
4、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。
int a=1,b=3,c=5; if(c=a+b) printf("yes\n"); else printf("no\n");
A.3
B.5
C.1
D.2
参考答案:A
5、当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是 ( )。
A. k%2==1
B. !k%2==1
C.(k%2)!=0
D. k%2
参考答案:B
6、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。
int n=0,m=l,x=2; if(!n) x-=l; if(!m) x-=2; if(!x) x-=3; printf (" %d\n",x);
A.1
B.3
C.6
D.2
参考答案:A
7、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。
int a=3,b=5,c=7; if(a>b) a=b; c=a; if(c!=a) c=b; printf("%d,%d,%d\n",a,b,c);
A. 3,5,5
B.3,5,7
C.程序段有语法错
D.3,5,3
参考答案:D
8、假定所有变量均已正确说明,执行以下程序段时,从键盘上输入1和2,则结果是( )。
int a,b,s; scanf("%d%d",&a,&b); s=a; if(a
A.1
B.2
C.4
D.9
参考答案:C
9、有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不等于3的是 ( )。
A.if(c<3)x=1; else if(b<2)x=2; else x=3;
B. if(a<2)x=3; else if(a<1)x=2; else x=1;
C.if(a<3)x=3; if(a<2)x=2; if(a<1)x=1;
D.if(a<2)x=b; if(b<3)x=c; if(c<1)x=a;
参考答案:C
10、下面选项if语句形式不正确的是 ( )。
A.if (x==y) x+=y,
B.if(x C.if(x!=y) scanf("%d",&x); else scanf("%d",&y); D.if (x>y&&x!=y); 参考答案:A 11、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与配对。 A.缩排位置相同的if B.同一行上的if C.其之后最近的if D.其之前最近的没有else配对的if 参考答案:D 12、在下面的条件语句中,只有一个在功能上与其它三个语句不等价,它是 ( )。 A.if (a) 语句1 else 语句2 B.if (a!=0) 语句1 else 语句2 C.if (a==0) 语句2 else 语句1 D.if (a==0) 语句1 else 语句2 参考答案:D 13、在C语言语句中,用来决定分支流程的表达式是 ( )。 A.只能用逻辑表达式 B.只能用关系表达式 C.可用任意表达式 D.只能用逻辑表达式或关系表达式 参考答案:C 14、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。 int k; k=-3; if(k<=0) printf(“####”); else printf(“&&&&”); A.#### B.####&&&& C.有语法错误,无输出结果 D.&&&& 参考答案:A 15、以下程序的输出结果是 ( )。 #include main() { int x=0,a=0,b=0; switch(x){ case 0: b++; case 1: a++; case 2: a++;b++;} printf(“a=%d,b=%d\n”,a,b); } A.a=2,b=1 B.a=2,b=2 C.a=1,b=0 D.a=1,b=1 参考答案:B 16、假定所有变量均已正确说明,以下程序段运行后的输出结果是 ( )。int a=1,b=5,c=3; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c); A.a=5 b=3 c=5 B. a=1 b=3 c=1 C.a=5 b=3 c=1 D. a=1 b=5 c=1 参考答案:B 17、有以下程序 #include main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n",d); else if((c-1>=d)==1) printf("%d\n",d+1); else printf("%d\n",d+2); } 执行后输出结果是 ( )。 A.编译时有错,无结果 B.2 C.3 D.4 参考答案:C 18、对下述程序,是正确的判断。 #include main ( ) { int x,y; scanf(“%d,%d”,&x,&y); if (x>y) x=y;y=x; else x++;y++; printf(“%d,%d”,x,y); } A.有语法错误,不能通过编译 B.若输入3和4,则输出4和5 C.若输入4和3,则输出4和5 D.若输入4和3,则输出3和4 参考答案:A 19、下述程序的输出结果是 ( )。 #include main ( ) { int a=0,b=0,c=0; if (++a>0 | | ++b>0) ++c; printf(“%d,%d,%d”,a,b,c); } A.0,0,0 B.1,1,1 C.1,0,1 D.0,1,1 参考答案:C 20、在C语言中,多分支选择结构语句为: switch(c) { case 常量表达式1:语句1; …… case 常量表达式n-1:语句n-1; default 语句n;} 其中括号内表达式c的类型: ( )。 A.只能为整型 B.可以为整型或实型 C.可以是任意类型 D.可以是整型或字符型 参考答案:D 21、若有以下定义:float x; int a,b; 则正确的switch语句是 ( )。 A.switch(x) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); } B.switch(x) { case 1,2: printf("*\n"); case 3: printf("**\n"); } C.switch(a+b) { case 1: printf("*\n"); case 1+2: printf("**\n"); } D. switch(a+b); { case 1: printf("*\n"); case 2: printf("**\n"); } 参考答案:A 22、以下程序中与语句k=a>b? (b>c?1:0):0功能等价的是 ( )。 A. if(a>b) k=1; B. if((a>b)&&(b>c)) k=1; else k=0; C. if((a>b)||(b>c)) k=1; else k=0; D. if (a<=b) k=0; else if (b<=c) k=1; else if (b else k=0; 参考答案:B 23、若欲表示在if后a不等于0的关系,则能够正确表示这一关系的表达式为 ( )。 A.!a B.a C.a<>0 D.a=0 参考答案:B 24、下列各语句序列中,能够将变量a和b中的较大值赋值到变量t中的是 ( )。 A.t=b; if(a>b) else t=a; B.t=a ; if(a>b) t=b; C.t=b; if(a>b) t=a; D.if(a>b) t=a ; t=b; 参考答案:C 25、有以下程序 #include main() { int x; scanf("%d",&x); if(x<=3) ; else if(x!=10) printf("%d\n",x); } 程序运行时,输入的值在______范围才会有输出结果。 A.小于3的整数 B.大于3或等于10的整数 C.不等于10的整数 D.大于3且不等10的整数 参考答案:D 26、以下4个选项中,不能看作一条语句的是( )。 A. if(a>0); B.a=0,b=0,c=0; C. if(b==0)m=1;n=2; D.{;} 参考答案:C 27、有以下程序 #include main() { int a=0,b=4,c=0,d=10,x; if(a) d=d-10; else if(!b) if(!c) x=15; else x=25; printf("%d\n",d); } 程序运行后的输出结果是( )。 A.3 B.20 C.10 D.5 参考答案:C 28、若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(a>b)a=b; c=a; if(c!=a)c=b; printf("%d,%d,%d\n",a,b,c); 其输出结果是( )。 A.3,5,3 B.3,5,7 C.程序段有语法错 D.3,5,5 参考答案:A 29、有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是( )。 A.if (c B.if (a<3) x=3; if (a<2) x=2;if (a<1) x=1; C.if (a<3) x=3;else if (b D.if (a 参考答案:B 30、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为( )。 if(a A.2 B.3 C.1 D.6 参考答案:A