1、国家二级 C语言机试(C 语言基础知识)模拟试卷 16及答案解析(总分:60.00,做题时间:90 分钟)一、选择题(总题数:30,分数:60.00)1.若变量均已正确定义并赋值,以下合法的 C语言赋值语句是(分数:2.00)A.x=n25;B.x+n=i;C.x=5=4+1;D.x=y=5;2.若有定义语句:int a=3,b=2,c=1;以下选项中错误的赋值表达式是(分数:2.00)A.a=b=c+1;B.a=(b=4)=3;C.a=(b=4)+c;D.a=1+(b=c=4);3.表达式 a+=a=a=9的值是(分数:2.00)A.-9B.0C.18D.94.若有以下程序 #include
2、stdioh main()int a=-11,b=10; a=b=-4; printf(“ddn“,ab); 则程序的输出结果是(分数:2.00)A.-1-2B.5-2C.4-3D.5-35.以下叙述中正确的是(分数:2.00)A.在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式B.a是实型变量,a=10 在 C语言中是允许的,因此可以说:实型变量中可以存放整型数C.若有 int a=4,b=9;执行了 a=b后,a 的值已由原值改变为 b的值,b 的值变为 0D.若有 int a=4,b=9;执行了 a-b;b=a;之后,a 的值为 9,b 的值为 46.有以下程序,程序运行后的输
3、出结果是 #include main()int a=3;printf(“dn“,(a+=a-=a*a);(分数:2.00)A.9B.0C.3D.-127.若有定义和语句: int a,b; scanf(“d,d,“,&a,&b); 以下选项中的输入数据,不能把值 3赋给变量 a、5 赋给变量 b的是(分数:2.00)A.3,5B.3,5,C.3,5D.3,5,48.有以下程序,程序运行后的输出结果是 main() int m=12,n=34; printf(“dd”,m+,+n); printf(“ddn”,n+,+m);(分数:2.00)A.12353514B.12353513C.12343
4、514D.123435139.在 16位编译系统上,若有定义“int a=10,20,30,*p=a;”,当执行“p*;”后,下列说法错误的是(分数:2.00)A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与 a+1等价10.设有定义: int x=2;以下表达式中,值不为 6的是(分数:2.00)A.2*x,x+=2B.x+,2*xC.x*=(1+x)D.x*=x+111.有以下程序,程序运行后的输出结果是 #include main()int x,y,z;x=y=1; z=x+,y+,+y; printf(“d,d,dn“,x,y、z);(分数:2
5、.00)A.2,3,1B.2,3,2C.2,3,3D.2,2,112.若变量 x、y 已正确定义并赋值,以下符合 C语言语法的表达式是(分数:2.00)A.+x,y=x-B.x+1=yC.x=x+10=x+yD.double(x)1013.设有定义: int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是(分数:2.00)A.k+B.k+=1C.+kD.k+114.若有以下程序,则程序的输出结果是 #include main()int a=0,b=0,c=0: c=(a-=+a),(a+=b,b+=4); printf(“d,d,dn“,a,b,c);(分数:2.00)A.0,4
6、,4B.1,4,1C.0,4,0D.1,4,415.若有以下程序 #include main()int a=0,b=0,c=0 c=(a+=+b,b+=4); printf(“d,d,dn“,a,b,c); 则程序的输出结果是(分数:2.00)A.1,5,1B.-1,4,4C.1,5,5D.-1,4,-116.有以下程序,程序的输出结果是 main()int sum,pad,pAd; sum=pad=5: pAd=+sum,pAd+,+pad; printf(“dn“,pad);(分数:2.00)A.5B.7C.8D.617.若有定义“int x,y;”并已正确给变量赋值,则以下选项中与表达式
7、“(xy)?(x+):(y+)”中的条件表达式(x-y)等价的是(分数:2.00)A.(x-y0)C.(x-y0)D.(x-y=0)18.以下选项中,当 x为大于 1的奇数时,值为 0的表达式是(分数:2.00)A.x2B.x2!=0C.x2=0D.x2=119.以下叙述中正确的是(分数:2.00)A.关系运算符两边的运算对象可以是 C语言中任意合法的表达式B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的20.以下叙述中正确的是(分数:2.00)A.a表示一个字符常量B.0表示
8、字符 0C.表达式:ab的结果是“假”D.“是非法的21.以下关于逻辑运算符两侧运算对象的叙述中正确的是(分数:2.00)A.只能是整数 0或非 0整数B.可以是结构体类型的数据C.可以是任意合法的表达式D.只能是整数 0或 122.若 a是数值类型,则逻辑表达式(a=1)(a!=1)的值是(分数:2.00)A.0B.2C.1D.不知道 a的值,不能确定23.当变量 c的值不为 2、4、6 时,值也为“真”的表达式是(分数:2.00)A.(c=2)(c=4)(c=6)B.(c=2&c=2&c=2&c=y=z)B.(x=y)(y=z)C.(x=y)!(y=z)D.(x=y)(y=x)28.以下叙
9、述中正确的是(分数:2.00)A.对于逻辑表达式:a+&b+,设 a的值为 0,则求解表达式的值后,b 的值会发生改变B.对于逻辑表达式:a+b+,设 a的值为 1,则求解表达式的值后,b 的值会发生改变C.关系运算符的结果有三种:0,1,-1D.else不是一条独立的语句,它只是 if语句的一部分29.以下叙述中正确的是(分数:2.00)A.由&构成的逻辑表达式与由构成的逻辑表达式都有“短路“现象B.C语言的关系表达式:06C.(3!=4)2D.30)C.(x-y0)D.(x-y=0) 解析:解析:条件表达式的形式如下:表达式 1?表达式 2;表达式 3。其含义为当“表达式 1”的值为非零时
10、,求出“表达式 2”的值,此时“表达式 2”的值就是整个条件表达式的值;当“表达式 1”的值为零时,则求“表达式 3”的值,这时“表达式 3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“xy”的值,若其值为非 0(可以是正数,也可以是负数),则再求表达式“x+”的值,其值就是条件表达式的值;若表达式“xy”的值为 0,则再求表达式“y+”的值,其值就是条件表达式的值。18.以下选项中,当 x为大于 1的奇数时,值为 0的表达式是(分数:2.00)A.x2B.x2!=0C.x2=0 D.x2=1解析:解析:由于 x为大于 1的奇数,因此 x2 取余的值为 1,和 0不相等。1
11、9.以下叙述中正确的是(分数:2.00)A.关系运算符两边的运算对象可以是 C语言中任意合法的表达式 B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的解析:解析:C 语言中没有逻辑类型,用非零表示逻辑真。0 表示逻辑假,选项 B错误,无法判断两个浮点变量是否相等,但是 x=y不会出现编译错误,选项 C错误,分支结构根据表达式的值,不一定为算术表达式,选项 D错误。20.以下叙述中正确的是(分数:2.00)A.a表示一个字符常量B.0表示字符 0C.表达式:ab的结果是“假” D
12、.“是非法的解析:解析:字符常量可以参加关系运算,按照其存储的 ASCII码值进行比较,ab不成立,值为假。而0表示 NULL,ASCII 码值为 0。21.以下关于逻辑运算符两侧运算对象的叙述中正确的是(分数:2.00)A.只能是整数 0或非 0整数B.可以是结构体类型的数据C.可以是任意合法的表达式 D.只能是整数 0或 1解析:解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为 0(“假”)。22.若 a是数值类型,则逻辑表达式(a=1)(a!=1)的值是(分数:2.00)A.0B.2C.1 D.不知道 a的值,不能确定解析:解析:在逻辑
13、表达式中,ab,只有在 a跟 b都为 0时,表达式的结果才为 0。在题中所给的表达式中 a要么等于 1,要么不等于 1,肯定会有一方的值不为真,表达式值为 1。23.当变量 c的值不为 2、4、6 时,值也为“真”的表达式是(分数:2.00)A.(c=2)(c=4)(c=6)B.(c=2&c=2&c=2&c=2&c=y=z)B.(x=y)(y=z) C.(x=y)!(y=z)D.(x=y)(y=x)解析:解析:若要表示 x大于等于 y,同时 y大于等于 z,需要用逻辑与表达式连接。28.以下叙述中正确的是(分数:2.00)A.对于逻辑表达式:a+&b+,设 a的值为 0,则求解表达式的值后,b 的值会发生改变B.对于逻辑表达式:a+b+,设 a的值为 1,则求解表达式的值后,b 的值会发生改变C.关系运算符的结果有三种:0,1,-1D.else不是一条独立的语句,它只是 if语句的一部分 解析:解析:else 不能单独使用,和 if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仪有 0和 1。29.以下叙述中正确的是(分数:2.00)A.由&构成的逻辑表达式与由构成的逻辑表达式都有“短路“现象 B.C语言的关系表达式:06C.(3!=4)2 D.32的结果为假。