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

2017年北京林业大学森林工程专业-专业综合测试之C语言程序设计考研复试核心题库

  摘要

一、选择题

1. 有以下结构体说明、变量定义和赋值语句

则以下scanf 函数调用语句有错误的是( )。 A. B. C. D.

【答案】D 【解析】不是地址,不能用于scanf 函数中。

2. 以下叙述中正确的是( )。

A. 在C 语言中,预处理命令行都以“#”开头

B. 预处理命令行必须位于C 源程序的起始位置

C.#include必须放在C 程序的开头

D.C 语言的预处理不能实现宏定义和条件编译的功能

【答案】A

【解析】编译预处理”就是在C 编译程序对C 源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A 项正确,在C 语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。B 项错误,预处理命令行可以出现在程序的任何一行的开始部位,其作

C 项错误,#inClUde可以出现在程序的任意一行的开始部位;用一直持续到源文件的末尾;

D 项错误,预处理可以实现宏定义、条件编译和文件包含。

3. 设有n 个数按从大到小的顺序存放在数组x 中,以下能使这n 个数在x 数组中的顺序变为从小到大的是( )。

【答案】A

【解析】本题使用for 循环实现数组元素首尾倒置。A 项中控制变量上限为n/2, 用变量t 实现数组下标值i 与的元素交换,使数组元素首尾倒置,从而实现从小到大排列,A 项正确。B 项控制变量上限为m 用变量t 实现数组下标值i 与n-i-1的元素交换,当i=n/2时,已经实现数组首尾倒置,而继续运行至i=n,将再次将新的数组首尾倒置,与原数组相比没有发生变化,依然是从大到小排列,B 项错误。C 项数组越界,i=0时x[n+ll不存在,C 项错误。D 项控制变量每次加2, 实现数组偶数下标值的元素首尾倒置,奇数下标值元素不变,不能实现整个数组从小到大排列,D 项错误。

4. 以下可以将任意一个两位整数n 的个位数与十位数对换的表达式为( )。

A. (n-n/10×10)×10+n/10

B.n-n/l0×l0+n/10

C.n/10+(n-n/10)

D. (n-n/10)×10+(n/10)

【答案】A

A 项n/10得到十位数字,n-n/10得到个位数字,【解析】将个位数乘以10加上十位数字,(n-n/10

×10)×l0+n/10实现将任意一个两位整数个位数与十位数对换,A 项正确。B 项n-n/10×10得到个位数字,n/10为十位数字,n-n/10×l0+n/10实现两位整数个位数与十位数之和,B 项错误。C 项n/10+(n-n/10)=n, 不能实现题目中要求,C 项错误。D 项n/10是十位数字,n-n/10为原两位整数减去十位数字,不是个位数字,D 项错误。

5. 以下选项中能表示合法常量的是( )。

A. 整数:1,200

B. 实数:

1.5E2.0

【答案】D

【解析】A 项错误,表达错误;B 项错误,E 后面应为整数,不能是小数;C 项错误;字符斜杠的表示方法

正确。

6. 有以下程序:

因为第一个\表示是转义字符;D 项正确,表示空字符串,

第一个字符为

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

A.1,6,3,1,3

B.1, 6, 3, 2, 3

C.1, 6, 3, 6, 3

D.1, 7, 3, 2, 3

【答案】B

【解析】程序执行过程为:输出i=l,之后i 自増,得i=2; 赋值项正确

7. 有以下结构体说明、变量定义和赋值语句

则以下scanf 函数调用语句有错误的是( )。

【答案】A

【解析】A 项错误

正确,确作符优先级高于是取是取s[0]中的age 成员,scanf 函数中需要传入变量的地址。B 项等价于C 项正确是取成员;D 项正

执行语句得i=6; 输出i=6,j=3; 花括号内的i 与花括号外i 作用域不同,属于不同的变量。之后再输出i=2,j=3。B 中的name 成员,name 是char 类型数组,自身就是首元素地址。

8. 有以下程序: