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

2017年青岛农业大学C程序设计(加试)复试实战预测五套卷

  摘要

一、选择题

1. 设已有定义: float x;

则以下对指针变量p 进行定义且赋初值的语句中正确的是( )。 A. B. C. D.

【答案】A

【解析】A 项正确,p 是float 类型的指针,指向x 的存储单元;B 项错误,p 是int 类型的指针,只能指向 int 变量的存储单元;C 项错误,p 的float 类型的变量,是取变量x 的地址,不能把地址赋值给float 类型变量;D 项错误,p 是指向float 类型的指针,不能使用常整型赋值。

2. 以下针对全局变量的叙述错误的是( )。

A. 全局变量的作用域是从定义位置开始至源文件结束

B. 全局变量是在函数外部任意位置上定义的变量

C. 用extern 说明符可以限制全局变量的作用域

D. 全局变量的生存期贯穿于整个程序的运行期间

【答案】C

【解析】在不同编译单位内用extern 说明符来扩展全局变量的作用域,extern 可以将全局变量作用域扩展到 其他文件,而不是限制全局变量的作用域,答案为C 选项。

3. 有以下程序:

I

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

A.5

B.6

C.8

D.9

【答案】D

【解析】fun 函数的功能是在屏幕上打印输入参数p 后的第五个元素。在main 中,a[3]的值为4, &a[3]即为取a[3]所指内容的地址,数组默认地址从0开始,p 指向4的地址,故

第 2 页,共 24 页 应为9。

4. 关于地址和指针,以下说法正确的是( )。

A. 通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量

B. 可以取一个常数的地址赋值给同类型的指针变量

C. 可以取一个表达式的地址赋值给同类型的指针变量

D. 可以取一个指针变量的地址赋值给基类型相同的指针变量

【答案】A

【解析】常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的 地址赋给指针变量没有任何意义,C 语言也不允许这样做,编译会出错,B 选项错误;表达式的值存储在临时变 量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C 语言不允许这样做,编译会出错,C 选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D 选项错误。故答案为A 选项。

5. 若有定义语句:A. B. C. D.

【答案】A 且则错误的赋值是( )。 【解析】二维数组名是指向指针的指针,故a 和q 都为指向指针的指针,而p 为指向int 类型的指针。A 项,将一个指向int 类型的指针指向一个指针的指针。

6. 若变量已正确定义为int 型,要通过语句

□代表一个空格符)给a 赋值1、给b 赋值2、给c 赋值3, 以下输入形式中错误的是(注:( )。

A. B. C. D.

【答案】D

【解析】在输入整数或实数这类数值型数据时,输入的数据之间必须用空格、回车符、制表符(Tab 键)等间隔符隔开,间隔符个数不限。在题目中,scanf 函数使用通配符逗号,则在输入数据时也要使用通配符逗号,且逗号要紧跟着数据后面。

7. 有以下程序:

第 3 页,共 24 页

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

A.1

B.2

C.4

D.8

【答案】D

【解析】f (l )输出2,然后调用f (2)输出4, 再调用f (4)输出8。

8. 已知字母A 的ASCII 码值为65,若变量kk 为char 型,以下不能正确判断出kk 中的值为大写字母的表达式是( ) A. B. C.

D.

【答案】B

B 项,

【解析】表达式等价为无法判断kk 中的值是否为大写字母,逻辑错误。

大写字母的ASCII 码值是65〜90, 小写字母的ASCII 码值是97〜122,isalpha (kk )是判断kk 是否是字母的函数,是字母并且字母ASCII 值小于91的一定为大写字母。

二、设计题

9. 学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组s 中,请编写函数fun , 它 的功能是:按分数的高低排列学生的记录,高分在前。

注意:部分源程序存在文件

语句。

给定源程序:

第 4 页,共 24 页

中。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干