参考分析:各种数据类型的取值范围是由其字长决定,字长确定的情况下,有符号数与无符号数的范围应当容易计算得知。
2.41设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为 。
A)float B)char C)int D)double 参考答案:D 参考分析:表达式的类型由表达式结果的类型决定。虽然本题各变量没有具体的变量值,由于参与运算的变量中z变量为double型,表达式计算的结果肯定为double型。 2.42若有以下定义,则能使值为3的表达式是 。 int k=7,x=12;
A)x%=k%=5 B)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+1 B)x=y=6,x+y,y+1 C)x=6,x+1,y=6,x+y D)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 若有以下定义,int m=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.49 C语言所提供的基本数据类型包括:单精度型、双精度型、【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 若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为【 】。 参考答案:5.5
2.58 若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为【 】。
参考答案:3.5
2.59 若有定义:char c='\\010';则变量c中包含的字符个数为【 】。 参考答案:1
2.60 若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为【 】。 参考答案:1
2.61 若有定义:int x=12,n=5;则计算表达式x%=(n%=2)后x的值为【 】。 参考答案:0
2.62 若有定义:int a,b;表达式a=2,b=5,a++,b++,a+b的值为【 】。 参考答案:9
2.63 C语言中的标识符只能由三种字符组成,它们是【1】、【2】和【3】。 参考答案:【1】字符 【2】数字 【3】下划线 *2.64 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【 】。 参考答案:f
参考分析:表达式计算中取各个字符的ASCII码值进行计算,但ch的值是以计算结果为码值的字符。
2.65 把以下多项式写成只含七次乘法运算,其余皆为加、减运算的表达式为【 】。 参考答案:((((((5*x+3)*x-4)*x+2)*x+1)*x-6)*x+1)*x+10
2.66 若double x=3.0,y=2.0;则表达式pow(y,fabs(x))的值为【 】。 参考答案:8.0
2.67 若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算表达式k=(e+f)/g+ sqrt((double)n)*1.2/g+m后k的值是【 】。 参考答案:13.7
2.68 表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为( )。 参考答案:int型
*2.69 表达式pow(2.8,sqrt(double(x)))值的数据类型为【 】。 参考答案:double型
*2.70 假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数表达式是【 】。
参考答案:m/10*100+m/100*10+m
参考分析:数字各个位的分离可以先整除再取余,也可以先取余再整除。
第三章 最简单的C程序设计
3.1 选择题
3.1 putchar函数可以向终端输出一个 。
A)整型变量表达式 B)实型变量值
C)字符串 D)字符或字符型变量值 参考答案:D
参考分析:putchar函数的作用是输出一个字符,可以是常量或变量。 *3.2以下程序的输出结果是 。
printf(\ printf(\
A)*s1=chinabeijing□□□* B)*s1=chinabeijing□□□*
*s2=**chi* *s2=chi□□*
C) *s1=□□chinabeijing* D) * s1=□□□chinabeijing*
*s2=□□chi* *s2=chi□□* 参考答案:D
参考分析:-:数据左齐,右补空格。
3.3 printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 【1】 ;如果字符串长度小于5,则输出按方式 【2】 。
A)从左起输出该字符串,右补空格 B)按原字符串长从左向右全部输出 C)右对齐输出该字符串,左补空格 D)输出错误信息 参考答案:【1】B 【2】C
*3.4已有定义int a=-2;和输出语句:printf(\以下正确的叙述是 。
A)整型变量的输出格式符只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的 D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 参考答案:D
参考分析:答案B基本上是正确的,但是%x不能正确的输出长整型数据。 *3.5以下C程序正确的运行结果是 。
main()
{ long y=-43456;
printf (\printf (\printf (\printf (\}
A)y=□□-43456 B)y=-43456 y=-□□43456 y=-43456 y=-0043456 y=-0043456 y=-43456 y=+□-43456 C)y=-43456 D) y=□□-43456 y=-43456 y=-0043456 y=-0043456 y=00043456
y=□□-43456 y=+43456 参考答案:C
参考分析:0:数据左侧必须充满,给定数据不足时,前面补0。
+:数据前面显示符号位。
*3.6以下C程序正确运行的结果是 。
main()
{ int y=2456;
printf(\printf(\printf(\}
A)y=□□□2456 B)y=□□□4630 y=□□□□□□□□2456 y=□□□□□□□□4630
y=########2456 y=########4630 C)y=2456 D)y=4630 y=□□□□2456 y=□□□□4630 y=□□□02456 y=□□□04630 参考答案:D
参考分析:#要求输出数据的类型特征符号。 3.7以下C程序正确的运行结果是 。
main()
{long y=23456;
printf(\lx\\n\printf(\lx\\n\printf(\lx\\n\}
A)y=5ba0 B)y=□□□5ba0 y=□□□□5ba0 y=□□□□□□□□5ba0 y=□□0x5ba0 y=□□0x5ba0 C)y=5ba0 D)y=5ba0
y=5ba0 y=□□□□5ba0 y=0x5ba0 y=####5ba0 参考答案:A
分析:长整型数据输出应当加修正字符l,如果不加l仅能输出数据的低两个字节,高字节数据不能输出。
*3.8 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是 。
A)scanf(\B)scanf(\C)scanf(\
D)scanf(\参考答案:D 参考分析:A)首先读第一个十进制数赋给变量x,读第二个长十六进制数赋给变量y(此时有自动赋值转换),再读入格式规定的第二和第三个数据间的间隔符号逗号,最后读入第三个double型数据赋给变量z。B)首先读入2个宽度的十进制数赋给变量x,再读入格式规定的第一和第二数据间的间隔符号星号,然后读入第二个十进制整数赋给变量y,然后读入第三个double型数据赋给变量z。C)读入第一个十六进制数赋给变量x,然后虚读一个十进制数不赋给任何变量,最后读入一个八进制数赋给变量y。D)%6.2f不符合格