参考答案:
A
分析:
在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:
char<=short<=int<=long<=float<=double,只有A符合16位PC机中的具体环境。
*2.2若x、i、j和k都是int型变量,则计算下面表达式后,x的值为。
x=(i=4,j=16,k=32)
A)4B)16C)32D)52
参考答案:
C
参考分析:
逗号表达式的计算结果是最后一个表达式的值。
k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。
**2.3假设所有变量均为整型,则表达式(a=2,b=5,a+b++,a+b)的值是。
A)7B)8C)5D)2
参考答案:
B
参考分析:
逗号表达式的计算结果是最后一个表达式的值。
b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。
2.4下列四组选项中,均不是C语言关键字的选项是。
A)defineB)getcC)includeD)while
IFcharscanfgo
typeprintfcasepow
参考答案:
A
参考分析:
是关键字的有:
char、case、while。
2.5下列四组选项中,均是C语言关键字的选项是。
A)autoB)switchC)signedD)if
enumtypedefunionstruct
includecontinuescanftype
参考答案:
B
参考分析:
不是关键字的:
include、scanf、type
*2.6下面四个选项中,均是不合法的用户标识符的选项是。
A)AB)floatC)b-aD)_123
P_0la0gototemp
do_AintINT
参考答案:
C
参考分析:
合法的有:
A、P_0、la0、_A、_123、temp、INT。
**2.7C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符。
A)必须为字母B)必须为下划线C)必须为字母或下划线
D)可以是字母、数字和下划线中的任一种字符
参考答案:
C
参考分析:
教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。
*2.8下面四个选项中,均是合法整型常量的选项是。
A)160B)-0xcdfC)-01D)-0x48a
-0xffff01a986,0122e5
0110xe06680x
参考答案:
A
参考分析:
不合法的B2,C2,C3,D2。
解释:
A2:
-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:
0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:
0x显然后面缺少数值,但在TC中是允许的。
*2.9下面四个选项中,均是不合法的整型常量的选项是。
A)--0f1B)-0XcdfC)-018D)-0x48eg
-0xffff017999-068
001112,4565e203f
参考答案:
D
参考分析:
不合法的A1,B3,C1,C3,D。
解释:
A1:
--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常量前面允许不允许加上--号,是否可以负负得正,显然不可以,--在C中是自减运算,它只适用于变量;B1:
0XcdfX大写也可以!
C3:
5e2是个实型数。
*2.10下面四个选项中,均是不合法的浮点数的选项是。
A)160.B)123C)-.18D)-e3
0.122e4.2123e4.234
e3.e50.01e3
参考答案:
B
参考分析:
不合法的有A3,B,D1。
部分解释:
A1,D2:
C语言中小数点前面或后面的0可以省略。
但是不能只有小数点自身;A3,B3,D1:
e的前后必须有合法数字。
1.e2.1e2合法,.e2不合法;B1:
123是整型数,不是浮点数。
*2.11下面四个选项中,均是合法的浮点数的选项是。
A)+1e+1B)-.60C)123eD)-e3
5e-9.412e-41.2e-.4.8e-4
03e2-8e5+2e-15.e-0
参考答案:
B
参考分析:
不合法的有A2:
阶码不能为小数;A3:
浮点数的尾数及阶码不能用八进制数表示;C1:
e后必须有整数,C2:
阶码不能为小数;D1:
缺少尾数。
*2.12下面四个选项中,均是合法转义符的选项是。
A)'\''B)'\'C)'\018'D)'\\0'
'\\''\017''\f''\101'
'\n''\"''xab''x1f'
参考答案:
A
参考分析:
"\"后面的数字,c总是按照八或十六进制解释。
由于c支持扩展ASCII字符集,所以,八进制数范围在0~377,十六进制数范围在00~ff。
*2.13下面四个选项中,均是不合法的转义符的选项是。
A)'\"'B)'\1011'C)'\011'D)'\abc'
'\\''\''\f''\101'
'\xf''\a''\}''x1f'
参考答案:
B
参考分析:
不合法的有B1,B2,B3,C3,D1,D3;但B3和C3值得讨论,实际上,'\a'是一个转义字符(07beep)。
C中只有少数字母是转义字符,大多数字母不是。
像'\c'就不是,它就是字符c自身,非转义字母加"\"也仅表示它本身。
C3'\}'也表示自身。
本题的命题人显然不知道'\a'也是转义字符。
*2.14下面正确的字符常量是。
A)"c"B)'\\''C)'W'D)""
参考答案:
C
*2.15下面四个选项中,均是不正确的八进制或十六进制数的选项是。
A)016B)0abcC)010D)0a12
0x8f017-0x117ff
0180xa0x16-123
参考答案:
D
参考分析:
不正确的有A3:
非法八进制数;B1、D1、D2:
缺少x;D3是十进制数。
2.16下面四个选项中,均是正确的八进制或十六进制数的选项是。
A)-10B)0abcC)0010D)0a12
0x8f-017-0x11-0x123
-0110xc0xf1-0xa
参考答案:
C
参考分析:
不正确的有A1:
这是十进制数;B1、D1:
缺少x
2.17下面四个选项中,均是正确的数值常量或字符常量的选项是。
A)0.0B)"a"C)'3'D)+001
0f3.9e-2.50110xabcd
8.9e1e10xFF002e2
'&''\"'0a50.
参考答案:
D
参考分析:
不正确的有A2、C4:
不是ox打头;A3:
e后不是整数;B1是字符串;B2:
2.5不是整数。
2.18下面不正确的字符串常量是。
A)'abc'B)"12'12"C)"0"D)""
参考答案:
A
参考分析:
与PASCAL不同,B)字符串内的单引号不需双写。
C语言中,在不引起误解的情况下,双引号界定的字符串里的单引号可以不加转义标志"\",单引号界定的双引号字符也可以不加转义标志"\"。
2.19对应以下各代数式中,若变量a和x均为double类型,则不正确的c语言表达式是。
A)ex^2/2exp(x*x/2)/sqr(2*3.14159)
√2π
B)½(ax+a+x/4a)1.0/2.0*(a*x+(a+x)/(4*a))
C)√sinx2.5sqrt((pow(sin(x*3.14159/180),2.5))
D)x2-e5x*x-exp(5.0)
参考答案:
C
2.20若有代数式3ae/bc,则不正确的C语言表达式是。
A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3
参考答案:
C
参考分析:
注意表达式的计算顺序
2.21已知各变量的类型说明如下,则不符合C语言语法规定的表达式是。
intk,a,b;
unsignedlongw=5;
doublex=1.42;
A)x%(-3)B)w+=-2C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)
参考答案:
A
参考分析:
不符合C语法规定的只有A,因为X为实型数。
2.22已知各变量说明如下,则符合C语言语法规定的表达式是。
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
A)a+=a-=(b=4)*(a=3)B)a=a*3=2C)x%(-3)D)y=float(i)
参考答案:
A
参考分析:
B)表达式不能出现在赋值号右侧;C)x是实型数,不能进行取余运算;D)应将float用括号扩起来(强制类型转换)。
*2.23以下不正确的叙述是。
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算表达式a=b后,b的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
参考答案:
D
参考分析:
整型变量可以输入实型数值,实型变量也可以输入整型数值
2.24以下正确的叙述是。
A)在C程序中,每行只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
参考答案:
D
参考分析:
注意它的描述,是只能用于整数运算,而不是整型数运算。
*2.25以下符合C语言语法的有赋值能力的表达式是。
A)d=9+e+f=d+9B)d=9+e,f=d+9
C)d=9+e,e++,d+9D)d=9+e++=d+7
参考答案:
B
参考分析:
C不是赋值表达式,是逗号表达式,赋值仅是其中的一部分。
严格说来,B也不是赋值表达式,它是由两个赋值表达式组成的逗号表达式。
**2.26已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2的值为。
A)DB)68C)不确定的值D)C
参考答案:
A
参考分析:
表达式中的各字符以各自的ASCII码参与运算。
*2.27在C语言中,要求运算数必须是整型(数)的运算符是。
A)/B)++C)!
=D)%
参考答案:
D
参考分析:
理论上++运算都是针对整型(含字符型)的,尽管现在很多系统提供了对实型变量的增量运算。
*2.28若以下变量均是整型,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为。
A)7B)8C)0D)10
参考答案:
A
参考分析:
注意sum和sUM不是一个变量(区分大小写)。
*2.29在C语言中,int、char和short三种类型数据在内存中所占用的字节数。
A)由用户自己定义B)均为两个字节
C)是任意的D)由所用机器的字长决定
参考答案:
D
参考分析:
参考答案很明确地表明了,C语言中各种类型在内存中所占用的字节数由所用机器字长决定。
通常在PC机中字符、整型、实型所占用的内存空间大小为1、2、4个字节。
2.30若有说明语句:
charc='\72';则变量c。
A)包含1个字符。
B)包含2个字符。
C)包含3个字符。
D)说明不合法,c的值不确定。
参考答案:
A
参考分析:
转义字符'\72'为字符':
'。
2.31若有定义:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是。
A)2.500000B)2.750000C)3.500000D)0.000000
参考答案:
A
参考分析:
计算时要注意其结合性和优先级。
*2.32sizeof(float)是。
A)一个双精度型表达式B)一个整型表达式
C)一种函数调用D)一个不合法的表达式
参考答案:
B
参考分析:
算术表达式的类型由表达式计算结果的类型决定
*2.33设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为。
A)intB)floatC)doubleD)不确定
参考答案:
C
参考分析:
实型只要参与运算就自动转换为double型。
2.34下面四个选项中,均是非法常量的选项是。
A)'as'B)'\\'C)-0x18D)0xabc
-0fff'\01'01177'\0'
'\0xa'12,4560xf"a"
参考答案:
A
参考分析:
A3转义字符以十六进制描述时,前面不能加0。
非法的还有B3
*2.35若有代数式√yx+log10y,则正确的C语言表达式是。
A)sqrt(fabs(pow(y,x)+log10(y)))
B)sqrt(abs(pow(y,x)+log10(Y)))
C)sqrt(fabs(pow(x,y)+log10(y)))
D)sqrt(abs(pow(x,y)+log10(y)))
参考答案:
A
参考分析:
c语言中整型和实型的绝对值函数各自独立,为abs和fabs;pow为一系统函数pow(y,x)=>yx。
2.36若有代数式|x3+lgx|,则正确的C语言表达式是。
A)fabs(x*3+log10(x))
B)abs(pow(x,3)+log10(x))
C)abs(pow(x,3.0)+log10(x))
D)fabs(pow(x,3.0)+log10(x))
参考答案:
D
参考分析:
以上两题均未说明x,y的类型,从表达式的性质可分析隐含为实型,因此应使用fabs。
*2.37在C语言中,char型数据在内存中的存储形式是。
A)补码B)反码C)原码D)ASCII码
参考答案:
D
参考分析:
计算机系统不能存储字符本身,存储的是字符的ASCII码。
*2.38设变量n为float,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入的表达式是。
A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
参考答案:
B
参考分析:
m=n*100+0.5赋值过程中有实型转整型的自动转换。
2.39表达式18/4*sqrt(4.0)/8值的数据类型为。
A)intB)floatC)doubleD)不确定
参考答案:
C
参考分析:
表达式的类型由表达式结果的类型决定。
2.40设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为。
A)0-255B)0-32767C)0-65535D)0-2147483647
参考答案:
C
参考分析:
各种数据类型的取值范围是由其字长决定,字长确定的情况下,有符号数与无符号数的范围应当容易计算得知。
2.41设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为。
A)floatB)charC)intD)double
参考答案:
D
参考分析:
表达式的类型由表达式结果的类型决定。
虽然本题各变量没有具体的变量值,由于参与运算的变量中z变量为double型,表达式计算的结果肯定为double型。
2.42若有以下定义,则能使值为3的表达式是。
intk=7,x=12;
A)x%=k%=5B)x%=k-k%5
C)x%=(k-k%5)D)(x%=k)-(k%=5)
参考答案:
D
参考分析:
A的值为0,B、C两个表达式相同,值为2,只有D的值为3。
2.43设以下变量均为int类型,则值不等于7的表达式是。
A)x=y=6,x+y,x+1B)x=y=6,x+y,y+1
C)x=6,x+1,y=6,x+yD)y=6,y+1,x=y,x+1
参考答案:
C
参考分析:
经计算可知,只有C的值为12,不为7。
2.2填空题
2.44在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为【1】;一个int型数据在内存中所占的字节数为【2】。
参考答案:
【1】1【2】2
2.45在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为【1】;一个double型数据在内存中所占的字节数为【2】。
参考答案:
【1】4【2】8
2.46若有以下定义,intm=5,y=2;则计算表达式y+=y-=m*=y后y的值是【】。
参考答案:
-16
2.47设C语言中,一个int型数据在内存中占2各字节,则int型数据的取值范围为【】。
参考答案:
-32768~32767
2.48在C语言中的实型变量分为两种类型,它们是【1】和【2】。
参考答案:
【1】float【2】double
*2.49C语言所提供的基本数据类型包括:
单精度型、双精度型、【1】、【2】和【3】。
参考答案:
字符型整型枚举
参考分析:
基本类型又称简单类型,若分为四种则为字符、整型、实型和枚举,若分为五种,则将实型分为单精度型和双精度型两种。
*2.50若s是int型变量,则表达式s%2+(s+1)%2的值为【】。
参考答案:
1
参考分析:
无论s是奇数还是偶数表达式的值只能是1。
*2.51若a是int型变量,则表达式(a=4*5,a*2),a+6的值为【】。
参考答案:
26
*2.52若x和a均是整型变量,则计算表达式
(1)后的x值为【1】,计算表达式
(2)后x的值为【2】。
(1)x=(a=4,6*2)
(2)x=a=4,6*2
参考答案:
【1】12【2】4
2.53若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a的值为【1】,b的值为【2】,c的值为【3】。
参考答案:
【1】6【2】4【3】2
2.54若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为【】。
参考答案:
-60
2.55若a是int型变量,则计算表达式a=25/3%3后a的值为【】。
参考答案:
2
2.56若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为【1】,n的值为【2】。
参考答案:
【1】10【2】6
2.57若有定义:
intb=7;floata=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为【】。
参考答案:
5.5
2.58若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为【】。
参考答案:
3.5
2.59若有定义:
charc='\010';则变量c中包含的字符个数为【】。
参考答案:
1
2.60若有定义:
intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为【】。
参考答案:
1
2.61若有定义:
intx=12,n=5;则计算表达式x%=(n%=