内容正文:
专题八 条件语句
1、 选择题
1.设变量a、b、c、d 和y 都已经正确定义并赋值,则以下if 语句的所表示的含义是_______。
if(a<b)
if(c==d)y=0;
else y=1;
A.a<b且c=d时y=0,a≥b时y=1
B.a<b且c=d时y=0,a≥b且c≠d时y=1
C.a<b且c=d时y=0,a<b且c≠d时y=1
D.a<b且c=d时y=0,c≠d时y=1
答案:C
解析:C语言规定,else子句总是与前面最近的不带else的if语句结合,与书写格式无关。
2.下列程序的输出结果是_______。
#include <stdio.h>
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,
C.1,0,1
D. 0,1,1
答案:C
解析:表达式++a>0||++b>0为逻辑或表达式,执行短路运算规则,左侧为真,右侧不参与计算。
3.执行以下程序后,输出的结果是______。
#include "stdio.h"
main()
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0)c=0;
else c+=1;
printf("%d
",c);
}
A.0
B.1
C.2
D.3
答案:C
解析:本题中if(c==d)y=0;与else y=1;匹配都是if(a<b)的嵌套子句。由于a<b不成立,故c值不变。
4.下列程序的输出结果是_______。
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c) printf("%d
",d);
else if((c-1>=d)==1)
printf("%d
",d+1);
else printf("%d
",d+2);
}
A.2
B.3
C.4
D. 编译时有误
答案:B
解析:本题考察if嵌套语句的执行过程。先执行表达式a>b>c为0,再执行else后的子句if,表达式为真,执行语句printf("%d
",d+1);