国家二级C语言机试(C语言基础知识)模拟试卷11(题后含答案及解析)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

国家二级C语言机试(C语言基础知识)模拟试卷11(题后含答案及
解析)
题型有:1. 选择题
选择题
1.若变量均已正确定义并赋值,以下合法的C语言赋值语句是
A.x=n%2.5;
B.x+n=i;
C.x=5=4+1:
D.x=y==5;
正确答案:D
解析:选项D)的含义是把关系表达式y==5的值赋给变量x。

所以这是一条正确的赋值语句。

因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量。

因为求余运算符“%”两侧的运算对象都应当是整型数据。

知识模块:C语言基础知识
2.若有定义语句:int a=3,b=2,c=1;以下选项中错误的赋值表达式是A.a=b=c+1;
B.a=(b=4)=3;
C.a=(b=4)+c;
D.a=1+(b=c=4);
正确答案:B
解析:本题主要考查赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。

知识模块:C语言基础知识
3.表达式a+=a=a=9的值是
A.-9
B.0
C.18
D.9
正确答案:B
解析:第一步a=9,然后计算a-a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。

知识模块:C语言基础知识
4.若有以下程序#include<stdio.h>main( ){int a=-11,b=10;a/=b/=-4:printf(“%d%d\n”,a,b);}则程序的输出结果是
A.-1-2
B.5-2
C.4-3
D.5-3
正确答案:B
解析:对于语句“a/=b,=-4;”相当于“a=a/(b=b/-4);”a初值为-11,b的初值为10,则运算以后10/-4值为-2,-11/-2值为5。

知识模块:C语言基础知识
5.以下叙述中正确的是
A.在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式
B.a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数
C.若有int a=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0
D.若有int a=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4
正确答案:A
解析:选项B)中a=10,在赋值时会把10自动转换为double类型然后赋值,实型变量中不可能存放整型。

而选项C)中执行a=b后,b的值不变还是9,选项D)中执行“a=b;b=a;”后,a的值为9,b的值也为9。

知识模块:C语言基础知识
6.有以下程序,程序运行后的输出结果是#include<stdio.h>main( ){int a=3;printf(“%d\n”,(a+=a-=a*a));}
A.9
B.0
C.3
D.-12
正确答案:D
解析:对于表达式“a+=a=a*a”相当于“a=a-(a*a)”,然后汁算“a=a+a”,a的初值为3,则表达式的值为-12。

知识模块:C语言基础知识
7.若有定义和语句:
A.3,5
B.3,5,
C.3,5
D.3,5,4
正确答案:C
解析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到输入流中,不能随意加入空格等,否则无法得到正确的输入结果。

知识模块:
C语言基础知识
8.有以下程序,程序运行后的输出结果是main( ){ int m=12,n=34;printf(“%d%d”,m++,++n);printf(“%d%d\n”,n++,++m);) A.12353514
B.12353513
C.12343514
D.12343513
正确答案:A
解析:本题主要考查自加运算符,自加运算符++在变量前表示先增加然后再使用,++在变量后表示先使用然再增加。

本题中,第一个printf语句m++表示先输出m的值,然后m增加1,因此首先输出的是12,然后m的值变成13,++n表示n首先增加1变成35然后输出,因此输出的是35;在第二个printf语句中,n++是先输出n的值然后增加,即输出35,n的值变为36,++m表示先增加m的值再输出,m的值由13变成14,故最后输出的是14。

知识模块:C语言基础知识
9.在16位编译系统上,若有定义“int a[]={10,20,30},*p=a;”,当执行“p++;”后,下列说法错误的是
A.P向高地址移了一个字节
B.P向高地址移了一个存储单元
C.P向高地址移了两个字节
D.P与a+1等价
正确答案:B
解析:本题考查数组和数组指针。

a是一个整型数组,p指针指向a数组,即p指向a数组的首元素的地址,因此p++之后,p往高地址移动,指向首元素后面一个元素的地址。

知识模块:C语言基础知识
10.设有定义:int x=2;以下表达式中,值不为6的是
A.2*x,x+=2
B.x++,2*x
C.x*=(1+x)
D.x*=x+1
正确答案:A
解析:本题考查逗号表达式。

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A)中值为4;选项B)中,值为6。

选项C)中x*=x+1等价于x=x*(x+1),所以等于6;选项D)与选项C)等价,结果也为6。

知识模块:C语言基础知识
11.有以下程序,程序运行后的输出结果是#includemain( ){int x,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,
z);}
A.2,3,1
B.2,3,2
C.2,3,3
D.2,2,1
正确答案:A
解析:在程序中,整型变量x、y的初值都为1,赋值语句“z=x++,y++,++y”右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的值为++y 的值。

执行逗号表达式“x++,y++,++y”后,x的值为2,y的值为3,z取逗号表达式的值,为1。

知识模块:C语言基础知识
12.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是
A.++x,y=x--
B.x+1=y
C.x=x+10=x+y
D.double(x)/10
正确答案:A
解析:用逗号将表达式连接起来的式子称为逗号表达式。

其表达式的一般形式为:表达式1,表达式2,……,表达式n。

最后一个表达式的值就是此逗号表达式的值。

所以选项A)为C语言中的逗号表达式。

赋值表达式的左侧只能是变量,不能是常量或表达式。

强制类型转换表达式的形式为:(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。

知识模块:C语言基础知识
13.设有定义:int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是
A.k++
B.k+=1
C.++k
D.k+1
正确答案:A
解析:因为题中有语句“int k=0;”,所以选项B)、C)、D)都是对k的值加1,选项A)的语句k++表示先利用k的值进行运算,然后k值才加1。

知识模块:C 语言基础知识
14.若有以下程序,则程序的输出结果是#include<stdio.h>main( ){int a=0,b=0,c=0;c=(a-=++a),(a+=b,b+=4);printf(“%d,%d,%d\n”,a,b,c);}
A.0,4,4
B.1,4,1
C.0,4,0
D.1,4,4
正确答案:C
解析:表达式c=(a=++a),(a+=b,b+=4)相当于逗号表达式,首先计算c=(a -=++a),其中(a-=++a)等价a=a-(++a),得到a的值0,c的值为0,在计算(a+=b,b+=4)时,a和b的初值为0,计算以后,a为0,b为4。

知识模块:C语言基础知识
15.若有以下程序#include<stdio.h>main( ){int a=0,b=0,c=0 c=(a+=++b,b+=4);printf(“%d,%d,%d\n”,a,b,c);}则程序的输出结果是A.1,5,1
B.-1,4,4
C.1,5,5
D.-1,4,-1
正确答案:C
解析:对于语句“c=(a+=++b,b+=4);”首先计算“a=a+(++b)”,a,b初值为0,则计算以后a为1,b为1,然后计算b+=4,得到b的值为5,此时表达式b+=4的值为整个逗号表达式的值,因此c的值为5。

知识模块:C语言基础知识
16.有以下程序,程序的输出结果是main( ){int sum,pad,pAd;sum=pad=5;pAd=++sum,pAd++,++pad;printf(“%d\n”,pad);} A.5
B.7
C.8
D.6
正确答案:D
解析:有逗号表达式构成的语句“pAd=++sum,pAd++,++pad;”主要从左到由连续运算,因此pad的值为6。

注意Dad和pAd的是不同的变量。

知识模块:C语言基础知识
17.若有定义“int x,y;”并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++):(y++)”中的条件表达式(x.y)等价的是
A.(x-y<0)
B.(x-y>0)
C.(x-y<0‖x—y>0)
D.(x-y==0)
正确答案:D
解析:条件表达式的形式如下:表达式1?表达式2:表达式3。

其含义为当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值:当“表达式1”的值为零时,则求“表达式3”的值,
这时“表达式3”的值就是整个表达式的值。

本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非0(可以是证数,也可以是负数),则再求表达式“x++”的值,其值就是条什表达式的值:若表达式“x-y”的值为0,则再求表达式“y++”的值,其值就是条什表达式的值。

知识模块:C语言基础知识
18.以下选项中,当x为大于1的奇数时,值为0的表达式是
A.x/2
B.x%2!=0
C.x%2==0
D.x%2==1
正确答案:C
解析:由于x为大于1的奇数,因此x%2取余的值为1,和0不相等。

知识模块:C语言基础知识
19.以下叙述中正确的是
A.关系运算符两边的运算对象可以是C语言中任意合法的表达式
B.在C语言中,逻辑真值和假值分别对应1和0
C.对于浮点变量x和y,表达式:x==y是非法的,会出编译错误
D.分支结构是根据算术表达式的结果来判断流程走向的
正确答案:A
解析:C语言中没有逻辑类型,用作零表永逻辑真。

0表示逻辑假,选项B)错误,无法判断两个浮点变量是否相等,但是x==y不会出现编译错误,选项C)错误,分支结构根据表达式的值,不一定为算术表达式,选项D)错误。

知识模块:C语言基础知识
20.以下叙述中正确的是
A.a表示一个字符常量
B.’\0’表示字符0
C.表达式:’a’>’b’的结果是“假”
D.’\”‘是非法的
正确答案:C
解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较,’a’>’b’不成立,值为假。

而’\0’表示NULL,ASCII码值为0。

知识模块:C语言基础知识
21.以下关于逻辑运算符两侧运算对象的叙述中正确的是
A.只能是整数0或非0整数
B.可以是结构体类型的数据
C.可以是任意合法的表达式
D.只能是整数0或1
正确答案:C
解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。

逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。

知识模块:C语言基础知识
22.若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是
A.0
B.2
C.1
D.不知道a的值,不能确定
正确答案:C
解析:在逻辑表达式中,a‖b,只有在a跟b都为0时,表达式的结果才为0。

在题中所给的表达式中a要么等于1,要么不等于1,肯定会有一方的值不为真,表达式值为1。

知识模块:C语言基础知识
23.当变量c的值不为2、4、6时,值也为“真”的表达式是
A.(c==2)‖(c==4)‖(c==6)
B.(c>=2&&c<=6)&&!(c%2)
C.(c>=2&&c<=6)&&(c%2!=1)
D.(c>=2&&c<=6)‖(c!=3)‖(c!=5)
正确答案:D
解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D)中c 的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。

知识模块:C语言基础知识
24.表示关系式x≤y≤z的C语言表达式的是
A.(x<=y)‖(y<=z)
B.(x<=y<=z)
C.(x<=y)&&(y<=z)
D.(x<=y)!(y<=z)
正确答案:C
解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。

知识模块:C语言基础知识
25.若变量已正确定义,以下选项中非法的表达式是
A.a!=4‖’b ‘
B.’a’%4
C.’a’=1/2*(x=y=20,x*3)
D.’A’+32
正确答案:C
解析:赋值表达式左边应为变量,选项C)中左边为字符常量,因此非法,
其余表达式均为合法的表达式。

知识模块:C语言基础知识
26.有以下程序,程序运行后的输出结果是main( ){int x=35,B;char z=‘B’;B=((x)&&(z<’b’));printf(“%d\n”,B);} A.0
B.35
C.1
D.66
正确答案:C
解析:表达式((x)&&(z<’b’)),x为35非零,考虑表达式z<’b’,成立,则B的值为1。

知识模块:C语言基础知识
27.与数学表达式x≥y≥z对应的C语言表达式是
A.(x>=y>=z)
B.(x>=y)&&(y>=z)
C.(x>=y)!(y>=z)
D.(x>=y)‖(y>=x)
正确答案:B
解析:若要表示x大于等于y,同时y大于等于z,需要用逻辑与表达式连接。

知识模块:C语言基础知识
28.以下叙述中正确的是
A.对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b 的值会发生改变
B.对于逻辑表达式:a++‖b++,设a的值为1,则求解表达式的值后,b 的值会发生改变
C.关系运算符的结果有三种:0,1,-1
D.else不是一条独立的语句,它只是if语句的一部分
正确答案:D
解析:else不能单独使用,和if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仅有0和1。

知识模块:C语言基础知识
29.以下叙述中正确的是
A.由&&构成的逻辑表达式与由‖构成的逻辑表达式都有“短路”现象
B.C语言的关系表达式:0<x
C.逻辑“非”(即运算符!)的运算级别是最低的
D.逻辑“或”(即运算符‖)的运算级别比算术运算要高
正确答案:A
解析:逻辑表达式的运算比较复杂,有短路现象,也就是首先计算“逻辑与”或者“逻辑或”运算的第一个运算量的值,根据表达式的值决定是否进行第二个
量的值的计算。

“逻辑与”和“逻辑或”运算低于关系运算和算术运算。

但是“逻辑非”运算却高于算术运算。

知识模块:C语言基础知识
30.下列关系表达式中,结果为“假”的是
A.(3<<4)==1
B.(3+4)>6
C.(3!=4)>2
D.3<=4
正确答案:C
解析:关系表达式和逻辑表达式的结果为非零或者0,其中0表示假,而非零表示真,由于3!=4的结果为1,而1>2的结果为假。

知识模块:C语言基础知识。

相关文档
最新文档