2018年河南科技大学管理院878面向对象程序设计之C程序设计考研核心题库
● 摘要
一、选择题
1. 以下选项中的编译预处理命令行,正确的是( )。
A.#definePI3.14
B.##defineeps0.001
C.#DEFINETRUE
D.#defineintINT
【答案】A
【解析】A 项正确。不带参数的宏定义是用一个指定的标识符来代表一个字符串,其一般形式如下:#define宏名替换文本。需要注意:①在#define、宏名和替换文本之间用空格隔开;②在C 程序中,宏定义的定义位置一般写在程序的开头;③宏名一般用大写字母表示,便于与变量名区别;④宏定义是用宏名来表示一个字符串,在宏展开时以该字符串取代宏名,这只是一种简单的代换,预处理程序对它不做任何检查;⑤宏定义不是语句,在行末不加分号,如加上分号则连分号也一起替换。B 项define 前多了一个#。C 项缺少“替换文本”。D 项不能将一个自定义标识符宏定义为关键字。
2. 有以下程序:
程序运行的结果是( )。
A.40
B.16
C.8
D.4
【答案】C
【解析】左移一位相当于原数乘以2, 右移一位相当于除以2。类型的范围。
3. 若程序中有宏定义行:
#defineN100
则以下叙述中正确的是( )。
A. 宏定义行中定义了标识符N 的值为整数100
B. 在编译程序对C 源程序进行预处理时用100替换标识符N
结果为没有超过char
C. 上述宏定义行实现将100赋给标识符N
D. 在运行时用100替换标识符N
【答案】D
【解析】D 项正确,预处理程序对源程序中所有使用宏名的地方进行直接替换。A 项错误,宏定义没有类型限制;B 项错误,预处理程序进行宏替换,而非编译程序;C 项错误,宏定义不是赋值操作,而是进行在预编译时进行替换。
4. 有以下程序
程序运行后的输出结果是( )。
A.24
B.28
C.32
D.36
【答案】A
【解析】第一次循环返回12, 第二次循环返回12, 累加结果为24。
5. 有以下程序(其中k 的初值为八进制数):
程序运行后的输出结果是( )。
A.12
B.11
C.10
D.9
【答案】D
k 的初值是八进制数011, 转换为十进制数就是9,
在输出时自增运算符【解析】
缀出现的,因此是先输出9, 然后k 的值再自增1。
是作为后
6. 下列叙述中错误的是( ) 。
A.C 程序在运行过程中所有的计算都以二进制方式进行
B.C 程序在运行过程中所有的计算都以十进制方式进行
C. 所有的C 程序都需要在连接无误后才能运行
D.C 程序中整型变量只能存放整数,实型变量只能存放浮点数
【答案】B
【解析】在C 程序运行过程中,编译器的作用是将程序转换为目标代码,目标代码都是二进制的。
7. 关于地址和指针,以下说法正确的是( )。
A. 通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量
B. 可以取一个常数的地址赋值给同类型的指针变量
C. 可以取一个表达式的地址赋值给同类型的指针变量
D. 可以取一个指针变量的地址赋值给基类型相同的指针变量
【答案】A
【解析】常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的 地址赋给指针变量没有任何意义,C 语言也不允许这样做,编译会出错,B 选项错误;表达式的值存储在临时变 量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C 语言不允许这样做,编译会出错,C 选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D 选项错误。故答案为A 选项。
8. 以下叙述中错误的是( )。
A. —个C 程序可以包含多个不同名的函数
B. —个C 程序只能有一个主函数
C.C 程序在书写时,有严格的缩进要求,否则不能编译通过
D.C 程序的主函数必须用main 作为函数名
【答案】C
【解析】一个C 程序有且只有一个主函数main 。一个C 程序可以包含多个不同名字的子函数。C 程序在书写时没有严格的缩进要求。
9. 有以下程序:
相关内容
相关标签