谭浩强C语言程序设计习题集 下载本文

参考答案: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'是一个转义字符(07 beep)。C中只有少数字母是转义字符,大多数字母不是。像'\\c'就不是,它就是字符c自身,非转义字母加\也仅表示它本身。C3'\\}'也表示自身。本题的命题人显然不知道'\\a'也是转义字符。

*2.14下面正确的字符常量是 。

A)\ B)'\\\\'' C)'W' D)\参考答案:C

*2.15下面四个选项中,均是不正确的八进制或十六进制数的选项是 。

A)016 B)0abc C)010 D)0a12 0x8f 017 -0x11 7ff 018 0xa 0x16 -123 参考答案:D

参考分析:不正确的有A3:非法八进制数;B1、D1、D2:缺少x;D3是十进制数。 2.16下面四个选项中,均是正确的八进制或十六进制数的选项是 。

A)-10 B)0abc C)0010 D)0a12 0x8f -017 -0x11 -0x123 -011 0xc 0xf1 -0xa 参考答案:C

参考分析:不正确的有A1:这是十进制数;B1、D1:缺少x

2.17下面四个选项中,均是正确的数值常量或字符常量的选项是 。

A)0.0 B)\ C)'3' D)+001 0f 3.9e-2.5 011 0xabcd 8.9e 1e1 0xFF00 2e2 '&' '\\\ 0a 50. 参考答案:D

参考分析:不正确的有A2、C4:不是ox打头;A3:e后不是整数; B1是字符串;B2:2.5不是整数。

2.18下面不正确的字符串常量是 。

A)'abc' B)\ C)\ D)\参考答案:A

参考分析:与PASCAL不同,B)字符串内的单引号不需双写。C语言中,在不引起误解的情况下,双引号界定的字符串里的单引号可以不加转义标志\单引号界定的双引号字符也可以不加转义标志\。

2.19 对应以下各代数式中,若变量a和x均为double类型,则不正确的c语言表达式是 。

A) ex^2/2 exp(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.5 sqrt((pow(sin(x*3.14159/180),2.5)) D)x2-e5 x*x-exp(5.0) 参考答案:C

2.20若有代数式3ae/bc,则不正确的C语言表达式是 。

A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c 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 i=8,k,a,b;

unsigned long w=5; double x=1.42,y=5.2;

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 B)d=9+e,f=d+9 C)d=9+e,e++,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)由用户自己定义 B)均为两个字节

C)是任意的 D)由所用机器的字长决定 参考答案:D 参考分析:参考答案很明确地表明了,C语言中各种类型在内存中所占用的字节数由所用机器字长决定。通常在PC机中字符、整型、实型所占用的内存空间大小为1、2、4个字节。

2.30若有说明语句:char c='\\72';则变量c 。

A)包含1个字符。 B)包含2个字符。

C)包含3个字符。 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)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式

参考答案:B

参考分析:算术表达式的类型由表达式计算结果的类型决定

*2.33设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 。

A)int B)float C)double D)不确定 参考答案:C

参考分析:实型只要参与运算就自动转换为double型。 2.34下面四个选项中,均是非法常量的选项是 。

A)'as' B)'\\\\' C)-0x18 D)0xabc -0fff '\\01' 01177 '\\0' '\\0xa' 12,456 0xf \参考答案: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.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/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 B)0-32767 C)0-65535 D)0-2147483647 参考答案:C