2018年云南大学物理科学技术院832计算机程序设计基础之C程序设计考研核心题库
● 摘要
一、选择题
1. 有以下程序:
程序的运行结果是( )。 A.a=l, b=0 B.a=2, b=2 C.a=l, b=l D.a=2, b=l 【答案】D
【解析】x=l,因此外层switch 语句是首先执行case1:后面的语句,进入内层的switch 语句;y=0,执行case0:后面的语句,得a=l,遇到break 语句后退出嵌入的switch 语句。由于外层switch 语句的easel :后面没有break 语句,因此继续执行case2:后面的语句,得a=2,b=l,遇到break 语句后退出第一个switch 语句。结果为a=2,b=l。
2. 有如下程序:
程序运行后的输出结果是( )。 A.15 B.0 C.1 D.10
【答案】D
【解析】static 变量编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。程序执行过程为:执行for 循环,i=l,调用函
数
调用函数sum (2),
调
用
函
数
退
返回指向init 的指针,输出
3. 有以下程序
出
for
循
环
调。
调用用
函
函
数数
程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车>
则输出结果是( )。 A.1245 B.1256 C.1278 D.1267 【答案】A
【解析】scanf ( )是格式化输入函数;getehar ( )函数从键盘缓冲区读入下一个
字符;putehar ( )输出一个字符;printf ( )函数是格式化输出函数。在题目中,程序执行到scanf ( )函数时,会暂停等待用户输入4个字符,按题意输入123〈回车〉后,字符1〜3被分别赋值到cl 〜c3中,而c4
会得到一个换行符
然后执行第1个getchar ( )函
数,由于前面的scanf ( )函数读完了缓冲区中的所有字符,所以此时程序又会暂停等待用户输入,按题意输入45678〈回车〉后,缓冲区第一个字符4赋值c5, 第二个字符5赋值给c6。
4. 以下关于C 语言数据类型使用的叙述中错误的是( )。
A. 若只处理“真”和“假”两种逻辑值,应使用逻辑类型 B. 若要保存带有多位小数的数据,可使用双精度类型
C. 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 D. 整数类型表示的自然数是准确无误差的 【答案】A
【解析】A 项错误,C 语言中没有逻辑类型,
在
中才引入的;B 项正确,float 类型称为
单精度类型,double 类型称为双精度类型,一般系统中,为float 类型的变量分配4个字节的存储单元,为double 类型的变量分配8 个字节的存储单元。C 项正确,struct 结构体,可以用来描述包含多种基本类型的复杂对象。
5. 若有定义:inta ,b :
通过语句
能把整数3赋给变量a , 5赋给变量b 的输入数据是( )。 A.3, 5 B.3;5 C.35 D.35
【答案】B
scanf 函数中如果使用通配符, 【解析】则在输入数据时也必须使用相同的通配符与它相匹配。
6. 若有定义:inta=0,b=0, c=0, d=0; ,有C
语言表达式以下关于其执行顺序的叙述正确是( )。
A. 先执行a++, 表达式a++的值为0,短路,得a++,执行它
B. 先执行a++,表达式a++的值为0; 再执行b++,表达式b++的值为0,
由此可确定值为0,因此执行d++
C. 先执行a++,表达式a++的值为1; 再执行b++,表达式b++的值为1,
由此可确定值为1, 因此执行C++
D. 先执行b++,表达式b++的值为1; 再执行a++,表达式a++的值为1,
由此可确定值为1,因此执行C++