当前位置:问答库>考研试题

2017年湖南师范大学物理与信息科学学院845C语言程序设计考研仿真模拟题

  摘要

一、选择题

1. 以下叙述中错误的是( )。

A. 当在程序的开头包含头文件stdio. h时,可以给指针变量赋NULL

B. 函数可以返回地址值

C. 改变函数形参的值,不会改变对应实参的值

D. 可以给指针变量赋一个整数作为地址值

【答案】D

【解析】不能将一个整数直接赋给指针变量作为地址,D 项错误。标准库文件stdiah 定义了 NULL 是一个 类型为void*,值等于0的对象。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。

2. 下列关于C 语言文件的叙述中正确的是( )。

A. 文件由一系列数据依次排列组成,只能构成二进制文件

B. 文件由结构序列组成,可以构成二进制文件或文本文件

C. 文件由数据序列组成,可以构成二进制文件或文本文件

D. 文件由字符序列组成,其类型只能是文本文件

【答案】C

【解析】C 语言将文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。根据数据的组成形式,可将文件分为两种:①ASCII 文件,又称文本

存储形式原样输出到磁盘上存放。所以C 文 件就是一个字节流或一个二进制流。

3. 有以下程序:

程序运行时键盘输入则输出的结果是( )。

A.10

B.11

C.9

D.8

第 2 页,共 38 页 文件,它的每一个字节可放一个ASCII 码,代表一个字符;②二进制文件,是把内存中的数据按其在内存中的

【答案】A 【解析】

和运算,当以前缀形式出现时,则先进行加一或减一操作,再取值,当

是先用后加,即a 以后缀形式出现时,则先取值,再进行加一或减一操作。判断条件中

的值为9, 所以条件不成立,但是a 已经进行了自增1操作,a 的值此时为10。执行else 语句时,因为打印是先用后减,所以先输出10, 然后a 的值变为9。

4. 若有函数声明

:以下叙述正确的是( )。

A. 函数参数array ,ptr 都是指针变量

B. 函数参数array 不是指针变量,ptr 是指针变量

C. 调用函数时,实参数组的值将一一复制给array 数组

D. 调用函数时,array 是按值传送,ptr 是按地址传送

【答案】A

【解析】数组名为数组的首地址,也是指向数组的指针,所以array 和ptr 都是指针,A 项正确,B 项错误。调用函数时,将实参数组首地址赋给指针array , 而不是传递整个数组元素,C 项错误。调用函数时,ar-ray 与ptr 都是按地址传送的,D 项错误。

5. 有以下程序

程序的输出结果是( )。

A.8

B.5

C.7

D.6

【答案】D

【解析】C 语言中的标识符区分大小写,pad 只实现了一次自增操作,结果输出6。

6. 若有定义语句

接着执行以下选项中的语句,则能正确执行的语句是( )。

A.

B.

C.

D.

【答案】B

第 3 页,共 38 页

【解析】scanf 中参数列表,需为地址,只有B 项符合题意。

7. 有以下程序:

程序运行后的输出结果是( )。

A.8,16

B.16,32

C.8,32

D.16,16

【答案】C

【解析】带参数的宏定义不是进行简单的字符串替换,而是要进行参数替换不计算,只是进行简单的替换。替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。FNA (FNB (a ))的替换过程为:FNA (2+2)替换为2+2X2+2,计算结果为8。FNB (FNA (b ))的替换过程为:FNB (4*4)替换为4X4+4X4=32。程序运行后的输出结果是8,32,故C 项正确。

-8. 表达式a+=a=a=9的值是( )。

A.9

B.-9

C.18

D.0

【答案】D

a+=a-=a=9计算顺序为a+=a-=9, 即a=a-9=9-9=0;,【解析】(a-=(a=9))首先a=9,最后a+=0,

即a=a+0=0+0=0。

9. 有以下程序

执行后的输出结果是( )。

第 4 页,共 38 页