1、国家二级 C语言机试(C 语言基础知识)模拟试卷 22及答案解析(总分:60.00,做题时间:90 分钟)一、选择题(总题数:30,分数:60.00)1.已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。以下不能将变量 c中的大写字母转换为对应小写字母的语句是(分数:2.00)A.c=(A+c)26-aB.c=C+32C.c=C-A+aD.c=(C-A)26+a2.以下选项中非法的 C语言字符常量是(分数:2.00)A.bB.007C.aaD.xaa3.以下选项中非法的 C语言字符常量是(分数:2.00)A.9B.09C.x09D.x9d4.若有定义语句 char
2、 c=101;则变量 c在内存中占(分数:2.00)A.2个字节B.3个字节C.1个字节D.4个字节5.若有以下程序,则程序的输出结果是 #include main()char c1,c2; el=C+8-3; c2=9-0; printf(“cdn“,c1,c2);(分数:2.00)A.H 9B.H 9C.F9D.表达式不合法输出无定值6.下面选项中合法的字符常量是(分数:2.00)A.XB.abcC.XD.7.以下叙述中正确的是(分数:2.00)A.字符常量在内存中占 2个字节B.转义字符要用双引号括起来,以便与普通的字符常量区分开C.字符常量需要用单引号括起来D.字符常量是不能进行关系运
3、算的8.以下叙述中正确的是(分数:2.00)A.字符变量在定义时不能赋初值B.同一英文字母的大写和小写形式代表的是同一个字符常量C.字符常量可以参与任何整数运算D.转义字符用符号开头9.若有定义语句:char a=82:则变量 a(分数:2.00)A.包含 1个字符B.说明不合法C.包含 2个字符D.包含 3个字符10.有以下程序,程序的输出结果是 main()char c1=A,c2=Y;printf(“d,dn“,c1,c2);(分数:2.00)A.输出格式不合法,输出出错信息B.65,90C.65,89D.A,Y11.C语言中 char类型数据占字节数为(分数:2.00)A.2B.3C.
4、1D.412.有以下程序,程序运行后的输出结果是 main()char a=H; a=(a=A&a-10&x-y10D.(x-y)*(xy)yC.(a*y)bD.y=x+y=x21.若有以下程序,编译时出现错误,你认为出错的是 #includestdioh main()int a=0,b=0,c=0,d; c=(a+=b,b+=a); *第 4行* d=c;*第 5行* ; *第 6行* printf(“d,d,dn“,a,b,c);*第 7行* (分数:2.00)A.第 4行B.第 5行C.第 6行D.第 7行22.不能正确表示数学式的 (分数:2.00)A.a*bcB.ac*bC.ab*c
5、D.a*(bc)23.C语言程序中,运算对象必须是整型数的运算符是(分数:2.00)A.B.C.&D.*24.设有定义:int k=1,m=2;float f=7;,则以下选项中错误的表达式是(分数:2.00)A.k=k=kB.-k+C.kint(t)D.k=f=m25.设有定义:int a=2,b=3,c=4:,则以下选项中值为 0的表达式是(分数:2.00)A.(!a=1)&(!b=0)B.(a=A&a=A&a-10&x-y10 D.(x-y)*(xy)yC.(a*y)bD.y=x+y=x解析:解析:选项 B中=kB.-k+C.kint(t)D.k=f=m 解析:解析:本题考查了赋值表达式
6、,在赋值表达式中,等号的左边必须是变量,等号右边可以是变量、表达式或者常量。选项 A是一个赋值表达式;选项 B是一个表达式;选项 C是计算余数表达式;选项 D错误,等号的左边不是变量。25.设有定义:int a=2,b=3,c=4:,则以下选项中值为 0的表达式是(分数:2.00)A.(!a=1)&(!b=0) B.(ab)&!c1C.a&bD.a(b+b)(c-a)解析:解析:本题主要考查逻辑运算。选项 A中,(!a=1)中!运算优先级比=高,因此!a 为假,然后在和 1比较是否相等,因此整个表达式的结果为假,(!a=1)和(!b=0)是与的关系,前面的表达式为假,整个表达式结果就是假(0)
7、;选项 B中 ab为真,!c 值为假,(ab)&!c 值为假,(ab)&!c1 为真;选项 C中 a&b的值为 2;选项 D中 a的值为真,表达式的结果为真。26.若有表达式(w)?(-x):(+y),则其中与 w等价的表达式是(分数:2.00)A.w=1B.w=0C.w!=1D.w!=0 解析:解析:本题考查条件表达式。(w)?(-x):(+y)的含义是如果 w非 0那么表达式的值为-x,否为+y,因此只有选项 D和 w等价。27.若有定义: double a=22; int i=0,k=18; 则不符合 C语言规定的赋值语句是(分数:2.00)A.i=(a+k)=(i+k);B.a=a+,
8、i+;C.i=a11; D.i=!a;解析:解析:在 C语言中,求余运算符的运算对象只能是整型,在题目中,变量 a是一个双精型实型变量。28.设变最已正确定义并赋值,以下正确的表达式是(分数:2.00)A.x=y+z+5,+y B.int(1585)C.x=y*5=x+zD.x=2550解析:解析:在赋值表达式中,赋值符号“=”的左边只能为赋值的变量,不能为表达式,右边可以为常量或者是表达式。故选项 C错误;在取余运算中,运算符“”两边都必须是整型数据,所以选项 B、D)错误,选项 A是 C语言中的逗号表达式。29.若有定义语句: int x=10;则表达式 x-=x+x的值为(分数:2.00
9、)A.-20B.0C.-10 D.10解析:解析:表达式 x-=x+x等价于 x=x-(x+x),整型变量 x的初始值等于 10,计算题目所求表达式的值时,首先计算 x与 x的和等于 20,然后再用 10减去 20等于-10,得到该表达式的值。30.有以下程序 #include main()int a=1,b=0; printf(“d,“,b=a+b); printf(“dn“,a=2*b); 程序运行后的输出结果是(分数:2.00)A.1,0B.3,2C.1,2 D.0,0解析:解析:在主函数中定义了两个整型变量 a和 b,并把它们的初值分别设置为 1和 0;在第二条语句中,首先计算出 a和 b的和等于 1,把此值赋给变量 b,并在屏幕上输出此时变量 b的值 1;在第三条语句中,计算出 2乘以 l的积等于 2,把 2赋给变量 a,再把变量 a的值在屏幕上输出。