国家二级C语言(C语言基础知识)机试模拟试卷19
选择题
1.以下叙述中正确的是(A)
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
解析:选项B中a=10,在赋值时会把10自动转换为double类型然后赋值,实型变量中不可能存放整型。而选项C中执行a=b后,b的值不变还是9,选项D中执行a=b;b=a;后,a的值为9,b的值也为9。
2.有以下程序
#include <stdio.h>
main() {
int a=3;
printf(\\(D)
A. 9
B. 0
C. 3
D. -12
解析:对于表达式a+=a-=a*a相当于a=a-(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。
3.若有定义和语句:
int a, b;
scanf(\\(C)
A. 3,5
B. 3,5,
C. 3 ,5
D. 3,5,4
解析:在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到输入流中,不能随意加入空格等,否则无法得到正确的输入结果。
4.设有定义: int x=2; 以下表达式中,值不为6的是(C)
A. 2*x, x+=2
B. x++,2*x
C. x*=(1+x)
D. x*=x+1
解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;选项B中,值为6。选项C中x*=x+1 等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。
5.有以下程序
#include
main() {
int x, y, z; x=y=1;
z=x++,y++,++y;
printf(\\(A)
A. 2,3,1
B. 2,3,2
C. 2,3,3
D. 2,2,1
解析:在程序中,整型变量x、y的初值都为1,赋值语句z=x++,y++,++y右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的值为++y的值。执行逗号表达式“x++,y++,++y”后,x的值为2,y的值为3,z取逗号表达式的值,为1。
6.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是(A)
A. ++x,y=x–
B. x+1=y
C. x=x+10=x+y
D. double(x)/10
解析:用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表达式的值。所以选项A为C语言中的逗号表达式。赋值表达式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。
7.设有定义: int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是(A)
A. k++
B. k+=1
C. ++k
D. k+1
解析:因为题中有语句int k=0;,所以选项B、C、D都是对k的值加1,选项A的语句k++表示先利用k的值进行运算,然后k值才加1。
8.若有以下程序
#include <stdio.h>
main() {
int a=0,b=0,c=0;
c= (a -= ++a), (a+=b, b+=4);
printf(\\(C)
A. 0,4,4
B. 1,4,1
C. 0,4,0
D. 1,4,4
解析:表达式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。
9.若有以下程序
#include <stdio.h>
main() {
int a=0,b=0,c=0 c= (a+=++b, b+=4);
printf(\\(C)
A. 1,5,1
B. -1,4,4
C. 1,5,5
D. -1,4,-1
解析:对于语句c= (a+=++b, b+=4);首先计算a=a+(++b),a,b初值为0,则计算以后a为1,b为1,然后计算b+=4,得到b的值为5,此时表达式b+=4的值为整个逗号表达式的值,因此c的值为5。
10.有以下程序
main() {
int sum, pad, pAd;
sum = pad = 5;
pAd = ++sum, pAd++, ++pad;
printf(\\(D)
A. 5
B. 7
C. 8
D. 6
解析:有逗号表达式构成的语句:pAd = ++sum, pAd++, ++pad;主要从左到由连续运算,因此pad的值为6。注意pad和pAd的是不同的变量。
11.若有定义int x,y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是(D)
A. (x-y<0)
B. (x-y>0)
C. (x-y<0‖x-y>0)
D. (x-y==0)
解析:条件表达式的形式如下:表达式1?表达式2 : 表达式3。其含义为当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,则求“表达式3”的值,这时“表达式3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非0(可以是正数,也可以是负数),则再求表达式“x++”的值,其值就是条件表达式的值;若表达式“x-y”的值为0,则再求表达式“y++”的值,其值就是条件表达式的值。
12.以下选项中,当x为大于1的奇数时,值为0的表达式是(B)
A. x/2
B. x%2==0
C. x%2!=0
D. x%2==1
解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项B等于关系表达式的结果为假,即等于0。
13.以下选项中,当x为大于1的奇数时,值为0的表达式是(C)
A. x/2
B. x%2!=0
C. x%2==0
D. x%2==1
解析:由于x为大于1的奇数,因此x%2取余的值为1,和0不相等。
14.以下叙述中正确的是(A)
A. 关系运算符两边的运算对象可以是C语言中任意合法的表达式
B. 在C语言中,逻辑真值和假值分别对应1和0
本文档预览:3600字符,共6247字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载