国家二级C语言机试(选择题)模拟试卷566
公共基础选择题
1.下列选项中,当x为大于1的奇数时,值为0的表达式是( )。(A)
A. x%2==0
B. x/2
C. x%2!=0
D. x%2==1
解析:算术运算符的优先级高于关系运算符的优先级。所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。故本题答案为A选项。
2.若a是数值类型,则逻辑表达式“(a==1)||(a!=1)”的值是( )。(A)
A. 1
B. 0
C. 2
D. 不知道a的值,不能确定
解析:逻辑或“||”要求两边的运算对象有一个非零值,结果就为真。变量a的值不确定,但是若a为1,则左边运算对象的值为1;若a不为1,则右边运算对象的值为1,所以总能保证一边为非零值。故本题答案为A选项。
3.当变量c的值不为2、4.6时,值为“真”的表达式是( )。(D)
A. (c>=2&&c<=6)&&(c%2!=1)
B. (c==2)||(c==4)||(c==6)
C. (c>=2&&c<=6)&&!(c%2)
D. (c>=2&&c<=6)||(c!=3)||(c!=5)
解析:逻辑或运算中只要有一个运算量为真,结果就为真。当“c>=2&&c<=6”条件不成立时,c的值肯定不是2、3、4、5、6,“c!=3”与“c!=5”均成立,所以D选项的结果一定为真。故本题答案为D选项。
4.有以下程序:
#include
main( )
{
int a=1,b=2,C=3,d=0;
if(a==1&&b++==2)
if(b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,@C@;
}
程序的运行结果是( )。(B)
A. 1,3,2
B. 1,3,3
C. 1,2,3
D. 3,2,1
解析:else总是和最近的if配对。进入第1个if语句进行条件判断时,因为是逻辑与运算,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断。结果为1,进入第2个if语句进行条件判断。因为“b!=2”条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第2个运算对象“c--!=3”,变量c的值不变,也不再执行第1个else语句。输出a的值1,b的值3,c的值3。故本题答案为B选项。
5.设有宏定义“#define IsDIV(k,n)((k%n==1)?1:0)”,且变量m已正确定义并赋值,则宏调用“IsDIV(m,5)&&IsDIV(m,7)”为真时所要表达的是( )。(B)
A. 判断m是否能被5和7整除
B. 判断m被5和7整除是否都余1
C. 判断m被5或者7整除是否余1
D. 判断m是否能被5或者7整除
解析:本题考查逻辑运算符的相关概念。逻辑与运算两边运算对象的值都为真时,结果才为真。所以需要m被5和7整除都余1。故本题答案为B选项。
6.if语句的基本形式是“if(表达式)语句”,以下关于“表达式”值的叙述中正确的是( )。(D)
A. 必须是逻辑值
B. 必须是整数值
C. 必须是正数
D. 可以是任意合法的数值
解析:if语句中的表达式可以是任意合法的数值,如常量、变量表达式。故本题答案为D选项。
7.下列条件语句中,输出结果与其他语句不同的是( )。(C)
A. if(a!=0)printf("%d\n",x);else printf("%d\n",y);
B. if(a==0)printf("%d\n",y);else printf("%d\n",x);
C. if(a==0)printf("%d\n",x);else printf("%d\n",y);
D. if(a)printf("%d\n",x);else printf("%d\n",y);
解析:A、B、D选项的含义均为:a的值如果为0,则输出y的值,否则输出x的值。而C选项的含义是:a的值为0时输出x的值,不为0时输出y的值,与其他选项正好相反。故本题答案为C选项。
8.有以下程序:
#include
main( )
{ int a=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序的运行结果是( )。(C)
A. 1,1,2,0
B. 0,0,0,3
C. 编译有错
D. 0,1,2,0
解析:本题中“if(a=1)b=1;”与“else d=3;”之间多了语句“c=2;”,所以会出现else语句的位置错误的编译失败提示。故本题答案为C选项。
9.设有定义“int a=1,b=2,c=3;”,以下语句中执行结果与其他3个不同的是( )。
C
解析:因为变量“a=1,b=2”,所以表达式“a>b”不成立。选项A、B和D相当于一条语句,选项A是逗号表达式,选项B和选项D是复合语句,所以都没有执行。选项C中,语句“c=a;”不执行,语句“a=b;b=c;”执行。故本题答案为C选项。
10.有嵌套的if语句:
if(a<b)
if(a<c)k=a;
else k=c:
else if(b<c)k=b;
else k=c:
以下选项中与上述if语句等价的语句是( )。(B)
A. k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B. k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C. k=(a<b)?a:b;k=(b<c)?b:C;
D. k=(a<b)?a:b;k=(a<c)?a:c;
解析:题目中嵌套语句的含义是当“a<b”且“a<c”成立时,将a的值赋给k;如果“a<b”成立而“a<c”不成立,则将c的值赋给k;如果“a<b”不成立而“b<c”成立,则将b的值赋给k;如果“a<b”不成立且“b<c”也不成立,则将c的值赋给k。判断条件表达式,只有B选项可以表示这个含义。故本题答案为B选项。
11.有以下程序:
#include
main( )
{
int x=1,y=2,z=3;
if(x>y)if(y<z)
<本文档预览:3600字符,共11841字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载