为符合 C 语言的规则。
1.2 填空题
1.6C 源程序的基本单位是【 】。
参考答案:函数
1.7 一个 C 源程序中至少应包括一个【 】。
参考答案: main()函数
1.8 在一个 C 源程序中,注释部分两侧的分界符分别为【 1】和【 2】。
参考答案:【1】/* 【2】*/
1.9 在 C 语言中,输入操作是由库函数【 1】完成的,输出操作是由库函数【 2】完成的。
参考答案:【1】scanf 【2】printf
第二章 数据类型、运算符与表达式
2.1 选择题
**2.1 C 语言中 (以 16 位 PC机为例 ),各数据类型的存储空间长度的排列顺序为
A)char
参考分析:不是关键字的: include、scanf、type
*2.6 下面四个选项中 ,均是不合法的用户标识符的选项是
A)A
P_0
do
B)float
la0
_A
C)b-a
goto
int
D)_123
temp
INT
。
参考答案: C
参考分析:合法的有: A、P_0、la0、_A、_123、temp、INT 。
**2.7 C 语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字
符
。
A) 必须为字母 B)必须为下划线
D)可以是字母、数字和下划线中的任一种字符
C)必须为字母或下划线
参考答案: C
参考分析:教材中只是强调首字符必须为字母 ,我们应当知道 ,在语言系统中 ,下划线和字
母具有同等的 ―法律效力 ‖。
*2.8 下面四个选项中 ,均是合法整型常量的选项是
。
A)160
B)-0xcdf
C)-01
D)-0x48a
-0xffff
011
01a
0xe
986,012
0668
2e5
0x
参考答案: A
参考分析: 不合法的 B2,C2,C3,D2。解释:A2:-0xffff 十六进制数本身已经包含了符号位 ,
一般不前面加符号位 ,但加上符号位也不错误; C3:0668 在有些 C 系统中 ,八进制数中允
许出现 8,但是通常不允许使用 8;D3:0x 显然后面缺少数值 ,但在 TC 中是允许的。
*2.9 下面四个选项中 ,均是不合法的整型常量的选项是
。
A)--0f1
-0xffff
0011
B)-0Xcdf
017
12,456
C)-018
999
5e2
D)-0x48eg
-068
03f
参考答案: D
参考分析:不合法的 A1,B3,C1,C3,D。解释: A1:--0f1 十六进制数没有 0x,显然不合法 ,
这里需要讨论的是常量前面允许不允许加上 --号,是否可以负负得正 ,显然不可以 ,--在 C
中是自减运算 ,它只适用于变量; B1:0Xcdf X 大写也可以! C3:5e2是个实型数。
*2.10 下面四个选项中 ,均是不合法的浮点数的选项是
。
A)160.
0.12
e3
B)123
C)-.18
2e4.2
.e5
123e4
0.0
D)-e3
.234
1e3
参考答案: B
参考分析:不合法的有 A3,B,D1。部分解释: A1,D2:C 语言中小数点前面或后面的 0 可
以省略。但是不能只有小数点自身; A3,B3,D1:e 的前后必须有合法数字。 1.e2
法,.e2不合法; B1:123 是整型数 ,不是浮点数。
*2.11 下面四个选项中 ,均是合法的浮点数的选项是
D)-e3
C)123e
。
B)-.60
A)+1e+1
5e-9.4
03e2
12e-4
-8e5
1.2e-.4
+2e-1
.8e-4
5.e-0
.1e2合
参考答案: B
参考分析:不合法的有 A2:阶码不能为小数; A3:浮点数的尾数及阶码不能用八进制数表
示; C1:e 后必须有整数 ,C2:阶码不能为小数; D1:缺少尾数。
*2.12 下面四个选项中 ,均是合法转义符的选项是
。
A)'\''
'\\'
'\n'
B)'\'
C)'\018'
D)'\\0'
'\017'
'\"'
'\f'
'xab'
'\101'
'x1f'
参考答案: A
参考分析:"\" 后面的数字 ,c 总是按照八或十六进制解释。 由于 c 支持扩展 ASCII 字符集,
所以,八进制数范围在 0~377,十六进制数范围在 00~ff 。
*2.13 下面四个选项中 ,均是不合法的转义符的选项是
。
A)'\"'
'\\'
'\xf'
B)'\1011'
C)'\011'
'\'
'\a'
'\f'
'\}'
D)'\abc'
'\101'
'x1f'
参考答案: B
参考分析:不合法的有 B1,B2,B3,C3,D1,D3;但 B3 和 C3 值得讨论 ,实际上 ,'\a'是一个转
义字符 (07 beep)。C 中只有少数字母是转义字符 ,大多数字母不是。像 '\c'就不是 ,它就是
字符 c 自身 ,非转义字母加 "\" 也仅表示它本身。 C3'\}' 也表示自身。本题的命题人显然不
知道 '\a'也是转义字符。
*2.14 下面正确的字符常量是
。
A)"c"
B)'\\''
C)'W'
D)""
参考答案: C
*2.15 下面四个选项中 ,均是不正确的八进制或十六进制数的选项是
。
A)016
0x8f
018
B)0abc
017
0xa
C)010
-0x11
0x16
D)0a12
7ff
-123
参考答案: D
参考分析:不正确的有 A3:非法八进制数; B1、D1、D2:缺少 x;D3 是十进制数。
2.16 下面四个选项中 ,均是正确的八进制或十六进制数的选项是
。
A)-10
0x8f
-011
B)0abc
-017
0xc
C)0010
-0x11
0xf1
D)0a12
-0x123
-0xa
参考答案: C
参考分析:不正确的有 A1:这是十进制数; B1、D1:缺少 x
2.17 下面四个选项中 ,均是正确的数值常量或字符常量的选项是
A)0.0
0f
8.9e
'&'
B)"a"
C)'3'
D)+001
3.9e-2.5
1e1
'\"'
011
0xFF00
0a
0xabcd
2e2
50.
。
参考答案: 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/2
√2π
exp(x*x/2)/sqr(2*3.14159)
B)? (ax+a+x/4a) 1.0/2.0*(a*x+(a+x)/(4*a))
C)√sinx2.5
D)x 2-e5
sqrt((pow(sin(x*3.14159/180),2.5))
x*x-exp(5.0)
参考答案: C
2.20 若有代数式 3ae/bc,则不正确的 C 语言表达式是
C)3*a*e/b*c
B)3*a*e/b/c
A)a/b/c*e*3
。
D)a*e/c/b*3
参考答案: C
参考分析:注意表达式的计算顺序
2.21 已知各变量的类型说明如下 ,则不符合 C 语言语法规定的表达式是
int k,a,b;
unsigned long w=5;
double x=1.42;
A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3)
参考答案: A
参考分析:不符合 C 语法规定的只有 A,因为 X 为实型数。
2.22 已知各变量说明如下 ,则符合 C 语言语法规定的表达式是
int
unsigned long w=5;
double x=1.42,y=5.2;
i=8,k,a,b;
A)a+=a-=(b=4)*(a=3) B)a=a*3=2 C)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+9
C)d=9+e,e++,d+9
B)d=9+e,f=d+9
D)d=9+e++=d+7
参考答案: B
参考分析: C 不是赋值表达式 ,是逗号表达式 ,赋值仅是其中的一部分。严格说来 ,B 也不
是赋值表达式 ,它是由两个赋值表达式组成的逗号表达式。
**2.26 已知字母 A 的 ASCII 码为十进制数 65,且 c2 为字符型 ,则执行语句 c2='A'+'6'-'3';
后,c2 的值为
。
A)D
B)68
C)不确定的值
D)C
参考答案: A
参考分析:表达式中的各字符以各自的 ASCII 码参与运算。
*2.27 在 C 语言中 ,要求运算数必须是整型 (数)的运算符是
。
A)/
B)++
C)!=
D)%
参考答案: D
参考分析:理论上 ++运算都是针对整型 (含字符型 )的,尽管现在很多系统提供了对实型变
量的增量运算。
*2.28 若以下变量均是整型 ,且 num=sum=7;则计算表达式 sUM=num++, sUM++,++num 后
sum 的值为
。
A)7
B)8
C)0
D)10
参考答案: A
参考分析:注意 sum 和 sUM 不是一个变量(区分大小写) 。
*2.29 在 C 语言中 ,int、char 和 short 三种类型数据在内存中所占用的字节数
。
A)由用户自己定义
C)是任意的
B)均为两个字节
D)由所用机器的字长决定
参考答案: D
参考分析:参考答案很明确地表明了 ,C 语言中各种类型在内存中所占用的字节数由所用
机器字长决定。通常在 PC 机中字符、整型、实型所占用的内存空间大小为 1、2、4 个
字节。
2.30 若有说明语句: char c='\72';则变量 c
。
A)包含 1 个字符。
C)包含 3 个字符。
B)包含 2 个字符。
D)说明不合法 ,c 的值不确定。
参考答案: A
参考分析:转义字符 '\72'为字符 ':'。
2.31 若有定义:int a=7; float x=2.5,y=4.7; 则表达式 x+a%3*(int)(x+y)%2/4 的值是
A)2.500000
B)2.750000
C)3.500000
D)0.000000
。
参考答案: A
参考分析:计算时要注意其结合性和优先级。
*2.32 sizeof(float)是
。
A)一个双精度型表达式
C)一种函数调用
B)一个整型表达式
D)一个不合法的表达式
参考答案: B
参考分析:算术表达式的类型由表达式计算结果的类型决定
*2.33 设变量 a是整型 ,f 是实型 ,i 是双精度型 ,则表达式 10+'a'+i*f 值的数据类型为
。
A)int
B)float
C)double
D)不确定
参考答案: C
参考分析:实型只要参与运算就自动转换为 double 型。
2.34 下面四个选项中 ,均是非法常量的选项是
。
D)0xabc
B)'\\'
'\01'
12,456
A)'as'
-0fff
'\0xa'
参考答案: A
参考分析: A3 转义字符以十六进制描述时 ,前面不能加 0。非法的还有 B3
*2.35 若有代数式 √yx+log10y,则正确的 C 语言表达式是
C)-0x18
01177
0xf
'\0'
"a"
。
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)=>y x。
2.36 若有代数式 |x3+lgx|,则正确的 C 语言表达式是
。
A)fabs(x*3+log 10(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 码。
*2.38 设变量 n 为 float,m 为 int 类型,则以下能实现将 n 中的数值保留小数点后两位 ,第三
位进行四舍五入的表达式是
。
A)n=(n*100+0.5)/100.0
C)n=n*100+0.5/100.0
B)m=n*100+0.5,n=m/100.0
D)n=(n/100+0.5)*100.0
参考答案: B
参考分析: m=n*100+0.5 赋值过程中有实型转整型的自动转换。
2.39 表达式 18/4*sqrt(4.0)/8 值的数据类型为
。
A)int
B)float
C)double
D)不确定
参考答案: C
参考分析:表达式的类型由表达式结果的类型决定。
2.40 设 C 语言中 ,一个 int 型数据在内存中占 2 个字节 ,则 unsigned int 型数据的取值范围
为
。
A)0-255
参考答案: C
B)0-32767
C)0-65535
D)0-2147483647
。
D)ASCII 码