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

2018年辽宁师范大学计算机应用研究所836C语言程序设计考研核心题库

  摘要

一、选择题

1. 若要实现total=l+2+3+4+5求和,以下程序段错误的是( )。

A.

B.

C.

D.

【答案】A

【解析】A 项执行过程为:i=l,total=l,判断while 循环条件1<5成立,total=l+l,i=2; 判断循环条件执行函数体,直到i=4, total=l+l+2+3+4, i=5; i=5循环条件不成立,退出循环,A 项不能实现题目要求,错误。B 项执行过程:i=l,total=0,1<=5成立,total=0+l=l,i=2; 直到i=5,total=l+2+3+4+5,i=6; i=6条件不成立,退出循环,程序正确。C 项执行过程:

立,;直到

成立,total=0, i=l;

直到条件不成立,退出循环,程序正确。D 项执行过程:

i=6; i=6条件不成立,退出循环,程序正确。

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

A. 赋值语句是一种执行语句,必须放在函数的可执行部分

B.scanf 和printf 是C 语言提供的输入和输出语句

C. 由printf 输出的数据都隐含左对齐

第 2 页,共 53 页 成

D. 由printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的

【答案】A

【解析】A 项正确,赋值语句是一种可执行语句,应当出现在函数的可执行部分。但需要注意,不要把变量定义时的赋初值和赋值语句混为一谈。B 项错误,C 语言本身没有提供输入输出功能,scanf 和printf 属于标准库函数;C 项错误,数据都隐含右对齐,如果想左对齐,可以在格式控制中的“%”和宽度之间加一个号来实现;D 项错误,若给出的总宽度nl 小于n2加上整数位数和小数点(e 或E 格式还要加上指数的5位),则自动突破nl 的限制。

3. 以下可以将任意一个两位整数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 项错误。

4. 有以下程序段,若变量已正确定义并赋值( )。

则与此程序段功能相同的选项是( )。

【答案】A

【解析】程序段执行过程为:如果a>b,输出x ,否则输出y ; 如果a<=b,i 加1,否则j 加1。A 项如果a>b,A 项正确。B 项如果a>b,输出x 且j 加1, 否则输出y 且i 加1, 与题目中功能相同,

输出x 且i 加1,否则输出y 且j 加1,与题目中功能不相同,B 项错误。C 项如果a<=b,输出x

第 3 页,共 53 页

C 项错误。D 项判断条件为a>=b,且i 加1,否则输出y 且j 加1,与题目中功能不相同,多了a=b,

D 项错误。

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

A. 在程序中凡是以“#”开始的语句行都是预处理命令行

B. 预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.C 程序对预处理命令行的处理是在程序执行的过程中进行的

【答案】D

【解析】在C 语言中,以“#”开头的行都称为“编译预处理命令行”,其中的末尾不得用“;”结束,区别语句的定义和说明语句。C 项,中的宏定义为不带参数的宏命令行,宏名之后可以有替换文本,也可以没有。编译预处理是在编译程序对C 源程序进行编译前执行的。

6. 若有定义

则执行表达式后a 、b 、c 的值依次为( )。

【答案】C

【解析】根据优先级规则,II 两边都是括号,则从左至右执行括号中的表达式,将

赋值给a ,即a 为5, 不为0, 则右边的括号不需要再执行。

7. 有以下程序:

程序的运行结果是( )。

A.0

B.5

C.14

D.15

【答案】B

dowhile 循环结构先执行后判断。【解析】先执行do 中的表达式执行while 中的表达式,结果为0, 退出循环,故最终结果是5。

8. 有如下程序:

第 4 页,共 53 页 的值即再