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

2016年济南大学信息科学与工程学院C语言程序设计考研复试题库

  摘要

一、选择题

1. 有以下程序:

程序的运行结果是( )。 A.6,5,4,3,2,1, B.1, 1

C.1, 1, 1, 1, 1, 1, D.1,2,3,4,5,6, 答:A 【

:输

也即

返回执行

之后的输出x[0]语句,即5, 同理再返回上一个f 函数,依

次输出4, 3,2,1。

2. 有以下程序

程序运行后的输出结果是( )。 A.2,3,1 B.2,3,2 C.2,3,3 D.2,2,1 答:A

第 2 页,共 34 页

,赋值运算符的优先级高于逗号运算符的优先级,【解析】对于表达式“z=x++,y++,++y; ”

,,可改成“(z=x++)(y++)(++y)”。然后从左向右先计算表达式z=x++,因为x++先使用后自増,所以z 的值为1,x 的值为2。再计算逗号表达式第二个表达式y++,此时y 的值为1,y++的值为2。最后计算第三个表达式++y,y 的值为3。

3. 有如下定义:

以下语句错误的是( )。

答:A

【解析】A 项中

_是结构指针访问结构成员的方式,如果为结构体内变量进行赋值,

前面应该加入取地址符

应该对指针地址指向的单元进行赋值,因此在

4. 设有两行定义语句:

intscanf ; floatcase ;

则以下叙述正确的是( )。 A. 两行定义语句都不合法 B. 两行定义语句都合法 C. 第1行语句不合法 D. 第2行语句不合法 答:D

【解析】预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf 为库函数名,属于预定义标识符,可以被用户重定义,第一行语句合法。C 语言关键字是被保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。case 是选择结构switch 语句中的关键字,不可被用户重定义,第二行语句不合法。

5. 有以下程序:

第 3 页,共 34 页

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

答:D

【解析】程序执行过程为:定义STU 类型数组,长度为2, 并为其初始

用函数

strcpy

使次输出

6. 设有定义:

将变量

值传入函数,

结果为:

调用函数

故D 项正确。

函数调用结束。其中结构体数组中元素并没有发生改变,依

若变量均已正确赋初值,则以下语句中错误的是( )。

答:A

【解析】A 项错误,struct 中的mark 成员是数组,数组一旦定义,不能直接赋值。B 项正确,numl 是int 变量,可以直接赋值。C 项正确,C 语言中struct 变量可以直接赋值,实际操作是内存拷贝;D 项正确,num2是int 变量,可以直接赋值;C 语言中,数组不能直接赋值,但是把数组包装在struct 中,就可以实现直接赋值。

7. 有以下程序:

第 4 页,共 34 页