a=(int)((double)(3/2)+0.5+(int)1.99*2); printf(\,a);
}
参考答案:3
【解析】本题中3/2=1,(double)(3/2)=1,(int)1.99*2=1*2=2,因此(int)(1+0.5+2)=(int)3.5=3。
24.【2010年3月选择题第12题】以下关于C语言的叙述中正确的是 A)C语言中的注释不可以夹在变量名或关键字的中间 B)C语言中的变量可以在使用之前的任何位置进行定义
C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 D)C语言的数值常量中夹带空格不影响常量值的正确表示 参考答案:A
【解析】C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B错误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。
25.【2010年3月填空题第13题】以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。 #include
{int x=256;
printf(\【13】,x/10,x/100); }
参考答案:x
【解析】x=256,x=6。
26.【2009年9月选择题第14题】表达式:(int)((double)9/2)-(9)%2的值是________。 A)0 B)3 C)4 D)5 参考答案:B 【解析】 (int)((double)9/2)的值为4,(9)%2的值为1,因此(int)((double)9/2)-(9)%2的值为3。
27.【2009年9月填空题第6题】若有定义语句:int a=5;,则表达式:a++的值是__【6】__。 参考答案:5
【解析】 a++的含义是在使用a值以后,使a值加1,所以a++的值为5。
28.【2009年9月填空题第7题】若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值为__【7】__。 参考答案:1
【解析】 y=(int)(x/5)%2=(int)(3.4)%2=3%2=1。
29.【2009年3月填空题第6题】表达式(int)((double)(5/2)+2.5)的值是__【6】__。 参考答案:4
6
【解析】计算5/2=2,其结果先转换为double类型,即2.000000,然后加上2.5为4.5000000,再转换为int型,所以结果为4。
2.3 赋值运算符和赋值表达式
30.【2011年9月选择题第15题】若有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为________。
A)1.9 B)1 C)2 D)2.4 参考答案:B
【解析】x的值为12,y的值为8,那么x/y的值就是1,因为z的类型是int,所以0.9+1变成int的值就是1,所以选择B)。
31.【2011年3月选择题第15题】若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是
A)a=(b=4)=3; B)a=b=c+1; C)a=(b=4)+c; D)a=1+(b=c=4); 参考答案:A
【解析】在A)选项中,赋值语句b=4先把4赋值给整型变量b,之后执行(b=4)=3是把常量3赋值给常量4,但是由于C语言规定赋值运算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。
32.【2010年9月选择题第14题】有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是
A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x 参考答案:B 【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。 33.【2009年9月选择题第15题】若有定义语句:int x=10;,则表达式x-=x+x的值为________。 A)-20 B)-10 C)0 D)10 参考答案:B
【解析】 x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。
34.【2010年9月选择题第16题】表达式a+=a-=a=9的值是 A)9 B)-9 C)18 D)0 参考答案:D
【解析】题干中的表达式可以分解为以下表达式:① a=9;② a=a-a 即a=9-9,此时a的值为0;③ a=a+a 即a=0+0,此时a的值为0。故本题的答案为D)。
35.【2009年3月选择题第14题】设有定义:int x=2;,以下表达式中,值不为6的是________。 A)x*=x+1 B)x++,2*x C)x*=(1+x)
7
D)2*x,x+=2 参考答案:D
【解析】 本题考察逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为\自左至右\。A)项和C)项的结果是一样的,可展开为:x=x*(x+1)=2]+,因为++运算符有自加功能,逗号之前执行后x的值为3,逗号后的值就是整个表达式的值,即6;D)项逗号之前并未给x赋值,所以表达式的值就是x+=2的值,即4。因此,本题答案为D)。
2.4 位运算
36.【2011年9月选择题第38题】有以下程序
#include
{ int a=2,b;
b=a<<2;printf(\,b); }
程序运行后的输出结果是________。 A)2 B)4 C)6 D)8 参考答案:D
【解析】考查移位操作,b的值是由a左移两位,所以b的值为2×2×2=8。
37.【2011年3月选择题第39题】有以下程序
#include
{ unsigned char a=8,c; c=a>>3;
printf(\,c); }
程序运行后的输出结果是
A)32 B)16 C)1 D)0 参考答案:C
【解析】本题中将8赋值给字符变量a,则a的二进制为\00001000\,a>>3的位运算是把a向右移动三位,结果为\00000001\,输出其十进制的值1。
38.【2010年9月选择题第40题】有以下程序 #include
{ short c=124; c=c ;
printf(\,c); }
若要使程序的运行结果为248,应在下划线处填入的是 A)>>2 B)| 248 C)&0248 D)<<1 参考答案:D
【解析】短整型在存储时占用16位,按照移位运算如果右移两位就等于原数除以4,结果
8
为31,如果左移一位相当于原数乘以2结果为248,所以选择D)。
39.【2010年3月选择题第39题】有以下程序 #include
{int a=2,b=2,c=2;
printf(\}
程序运行后的输出结果是
A)0 B)1 C)2 D)3 参考答案:A
【解析】对于a/b&c,先求a/b,得到1,然后求1&c(即按位与操作),显然得0。
40.【2009年9月选择题第39题】若有以下程序段: int r=8;
printf(\,r>>1); 输出结果是________。 A)16 B)8 C)4 D)2 参考答案:C
【解析】 8用二进制表示为1000,右移1位后为0100,即十进制4。
41.【2009年3月选择题第39题】有以下程序: #include
{ int a=5,b=l,t;
t=(a<<2)|b;printf(\,t); }
程序运行后的输出结果是________。 A)2l B)11 C)6 D)1 参考答案:A
【解析】按位或运算符\是双目运算符,其功能是参与运算的两数各对应的二进位相或。左移运算符\是双目运算符,其功能把\左边的运算数的各二进位全部左移若干位,由\右边的数指定移动的位数,高位丢弃,低位补0。将5变换为二进制数为101,左移2位后为10100,1转换为二进制数为00001,10100与00001进行或运算后为10101,再将其转换为十进制数为21。因此,本题答案为A)。
9
第3章 基本语句
3.1 C语句概述
42.【2009年9月选择题第16题】有以下程序:
#include
{ int a=1,b=0;
printf(\,\,b=a+b); printf(\,a=2*b); }
程序运行后的输出结果是________。 A)0,0 B)1,0 C)3,2 D)1,2 参考答案:D 【解析】 执行第一个printf语句时,b=a+b=1,所以输出1,执行第二个printf语句时,a=2*b=2,所以输出结果为2。
3.2 赋值语句
3.3 输入输出概念及其实现 3.4 单个字符的输入与输出 3.5 数据格式的输入与输出
43.【2011年9月选择题第16题】若有定义:int a,b;,通过语句scanf(\;%d\,&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是________。 A)3 5 B)3,5 C)3;5 D)35 参考答案:C
【解析】在C语言中scanf函数中输入数据时要严格按照所规定的样式输入。
44.【2011年9月填空题第6题】若程序中已给整型变量a和b赋值10和20,请写出按以下格式输出a、b值的语句__【6】__。 ****a=10,b=20****
参考答案:printf(\
【解析】本题考查的是printf函数的用法, prinrf函数实际上是将所有参数按字符输出。
45【2010年9月填空题第6题】以下程序运行后的输出结果是 【6】 。 #include
{ int a=200,b=010;
printf(\,a,b); }
10