2018年河北科技师范院职教研究所、教育院996计算机知识综合[专硕]之C程序设计考研核心题库
● 摘要
一、选择题
1. 以下关于C 语言的叙述中正确的是( )。
A.C 语言中的注释不可以夹在变量名或关键字的中间 B.C 语言中的变量可以在使用之前的任何位置进行定义
C. 在C 语言算术表达式的书写中,运算符两侧的运算数类型必须一致 D.C 语言的数值常量中夹带空格不影响常量值的正确表示 【答案】B
【解析】A 项错误,C 语言中,程序中的注释可以出现在程序中任何合适的地方,为了方便程序理解,一般不建议写在变量名或关键字的中间;C 项错误,在C 语言的算术运算符中,取余运算符“%”的两个运算分量必须是整数,但对于其他运算符,如“+”来说,两侧的运算符类型也可以不一样,例如左侧为一个字符类型,右侧为一个整数类型,系统在执行程序时会自动将字符类型转换为ASCII 值进行运算;D 项错误,C 语言的数值表示时各个数位必须紧靠在一起,否则编译系统只会识别紧靠运算符的一部分数值,另一部分数值会发生语法错误。
2. 若有以下程序段:
输出结果是。 A.16 B.8 C.4 D.2
【答案】C 【解析】C 语言中
,
右移运算符是将变量转换成二进制,然后右移相应位数,将移出的
位信息舍去,并在高位补0, 将所得的结果再赋值给变量。本题十进制数8转换为二进制数为00001000, 右移一位得到00000100, 再转换成十进制数就是4。
3. 有以下程序:
程序运行的结果是( )。 A.10, 1 B.20, 1 C.10,2 D.20, 2 【答案】C
【解析】题目首先定义结构体st 的同时定义结构体数组data ,可
知
结构体指针p 指向数组的首地址,
指向
的第二个元素data[l],
然后输出
即输出
4. 以下程序中关于指针输入格式正确的是( )。
A.
B.
C. D. 【答案】C
则指向数组
所以分别为10和2。
【解析】A 项错误,指针p 未初始化,且scanf 中p 的格式不对;B 项,指针p 未初始化;C 项正确,首先 将k 的地址赋值给p ,然后通过p 从键盘输入数据给k 赋值;D 项错误,给指针p 的赋值错误。
5. 以下叙述中正确的是( )。
A. 函数的返回值不能是结构体指针类型 B. 函数的返回值不能是结构体类型
C. 在调用函数时,可以将结构体变量作为实参传给函数 D. 结构体数组不能作为参数传给函数 【答案】C
【解析】C 项正确,结构体变量作为实参时,是传值形式调用;AB 两项错误,函数的返回值可以是结构体变量和结构体指针变量;D 项错误,向函数传递结构体数组名时,传递的是实参结构体数组的首地址,是传引用形式调用。
6. 有以下程序:
程序运行后的输出结果是( )。 A.0 B.1 C.4 D.8
【答案】C
【解析】对局部静态变量在编译时赋初值,以后每次调用函数时一直保持不变,只是保留上次函数调用结束 时的值。在主函数中调用了两次fim0函数,所以x
的值变为
7. 设有如下程序段:
以下叙述正确的是( )。 A. 只有a ,b ,c 的定义是合法的 B.a , b ,c ,d 的定义都是合法的 C. 只有a , b 的定义是合法的 D. 只有c 的定义是合法的 【答案】C
【解析】在对数组进行初始化时,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如果被定义数组的长度与初值个数不同,则数组长度不能省略;如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C 语言将自动对余下的元素赋初值。定义整型数组a ,长度为8, 并且其每个元素赋初值0, a 定义是合法的。定义整型数组b , 没有指定长度,但为1个元素赋值0,所以自动指定数组长度为1,b 定义是合法的。定义字符型数组c ,长度为2, 应对其元素赋值字符型常量,而“A ”与“B ”均为字符串,c 定义不合法。定义字符d ,赋初值字符串“AB ”,这是不合法的定义,若要定义数组,必须要
有
8. 若程序中有宏定义行:
#defineN100
则以下叙述中正确的是( )。
A. 宏定义行中定义了标识符N 的值为整数100
B. 在编译程序对C 源程序进行预处理时用100替换标识符N
下标运算符。可知,ab 定义合法,cd 定义不合法,C 项正确。