一、选择题
1. 有以下程序:
程序的运行结果是( )。 A.10 B.20 C.14 D.16 答:C 【解析】
系统默认为指针指向数组中第
执行的是将数组
2. 设有以下语句
执行后,c 的值为( )。 A.9 B.7 C.8 D.6 答:A
【解析】
后得到8, 异或操作,两个操作数相同得0, 不同得1。a 的最右4位是0001,b
的最右4位是1000, 其佘尾全部是0。
3. 若有定义:
则与上述定义完全等价的说明语句是( )。 A.int*a[20][10]; B.int*a[20]; C.int*a[10]; D.int*a[10][20];
第 2 页,共 32 页
个元素,因此,在for 循环中
,
和累加后赋值给n , 最后输出,值为14。
答:A
【解析】新定义的类型T 为大小为10的整型数组,定义T 型指针数组*a[20],等价于定义了一个指向整型长度为10的数组的指针数组,这个指针数组大小为20,即为整型指针二维数组,行20列10,A 项正确。
4. 以下函数的功能是计算a 的n 次方作为函数值返回:
为实现上述功能,函数中下画线处应填入的是( )。
A.
B.
C.
D. 答:B
,【解析】for 循环语句,i=l时,
最后返回s 。
5. 设a , b ,c 是整型变量且均已赋值,则以下选项中错误的赋值语句是( )。
A.a=(b=3)=1; B.a=(b=2)+c; C.a=b=c+10; D.a=l+(b=c=2): 答:A
【解析】赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。A 项中,赋值运算(b=3)=1, 左值为表达式,不是变量不能被赋值,A 项错误。B 项运算过程为,先赋值b=2, 再计算b+c,将结果赋给a ,是正确的赋值语句。C 项运算过程为,先计算c+10将结果赋给b , 再将b 赋给a ,是正确的赋值语句。D 项运算过程为,先将2赋给c , 再将c 赋给b , 然后计算1+b, 将结果赋给a , 是正确的赋值语句。 6 若主函数中有定义语句在主函数前定义的fun 函数首部为.则
以下选项中错误的调用语句是( )。
A.
B.
C.
D. 答:D
【解析】D 项错误,
首先数组访问越界,其次
第 3 页,共 32 页
是一个整数型,而函数fun 的参数是
一个数组。
7. 关于C 语言中数的表示,以下叙述中正确的是( )。
A. 只有整型数在允许范围内能精确无误地表示,实型数会有误差 B. 只要在允许范围内整型和实型都能精确表示
C. 只有实型数在允许范围内能精确无误地表示,整型数会有误差 D. 只有八进制表示的数才不会有误差 答:A
【解析】实型数据在内存中存储的二进制位数是有限的,而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差。在整形数允许范围之内,二进制可以表示任意一个整数。
8. 设有定义:doublex=2.12; ,以下不能完整输出变量x 值的语句是( )。
答:A
【解析】printf 函数控制字符财输出float 类型,%If 输出double 类型。格式控制%m.nf ,表示数据输出总的宽度为m 位,其中小数部分占n 位。当数据的小数位多于指定宽度n 时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度n 时,在小数的右边补零;当m 小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照n 指定位数输出。A 项按照float 格式输出数据,宽度为5位,保留小数0位,输出为2,不能完整输出X ,选择A 项。B 项按照float 格式输出数据,输出为2.120000。C 项按照double 格式 输出数据,输出为2.120000〇D 项按照float 格式输出数据,保留小数位数为5,输出为2.12000。
9. 有以下函数:
程序运行后的输出结果是( )。 A.2 4 6 8 10 B.1 3 5 7 9 C.1 2 3 4 5 D.6 7 8 9 10
第 4 页,共 32 页