国家二级(C语言)机试模拟试卷138
选择题
1.在下列数据结构中,支持子程序调用的是( )。(C)
A. 循环队列
B. 树
C. 栈
D. 二叉树
解析:C语言中只能通过struct关键字定义新的结构体,使用typedef对现有类型起别名,但不能定义新的数据类型,所以答案C正确。
2.关于计算机栈和队列的叙述中正确的是( )。(D)
A. 栈是“先进先出”的线性表
B. 队列是“先进后出”的线性表
C. 循环队列是非线性结构
D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
解析:栈的存取原则是先进后出,队列的存取原则是先进先出,队列是线性结构,所以A,B,C都不正确;有序线性表既可以采用顺序存储结构,也可以采用链式存储结构,所以D正确。
3.设二叉树中度为2的节点有8个,则叶子节点数是( )。(D)
A. 10
B. 8
C. 6
D. 9
解析:二叉树中,叶子节点的个数比度为2的节点的个数多1,所以答案为9。
4.下列排序方法中,最坏情况下比较次数最少的是( )。(D)
A. 堆排序
B. 简单选择排序
C. 直接插入排序
D. 冒泡排序
解析:typedef和struct可以联合使用来定义新的结构体,但不能定义新的数据类型。所以A,B,C选项的说法均不正确。答案选D项。
5.计算机软件通常分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。(C)
A. 编译程序
B. 操作系统
C. 图书借阅系统
D. 汇编程序
解析:编译程序、操作系统和汇编程序均是系统软件。
6.关于软件测试和调试的叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试的目的仅仅是发现错误。
7.关于耦合性和内聚性的叙述中正确的是( )。(B)
A. 提高耦合性降低内聚性有利于提高模块的独立性
B. 降低耦合性提高内聚性有利于提高模块的独立性
C. 耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D. 内聚性是指模块间互相连接的紧密程度
解析:软件模块化设计的目的之一是希望高内聚、低耦合,所以B正确;选项C和D的说法正好相反,正确的应该是:内聚性是指一个模块内部各个元素间彼此结合的紧密程度,耦合性是指模块间互相连接的紧密程度。
8.计算机数据库管理系统中的核心问题是( )。(B)
A. 数据库管理
B. 数据库设计
C. 数据库维护
D. 数据库管理员培训
解析:计算机数据库管理系统中的核心问题是数据库设计。
9.有两个关系R、S如下:
(B)
A. 并
B. 投影
C. 插入
D. 自然连接
解析:投影运算是指对于关系内的域指定可引入新的运算。S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。
10.软件设计过程中的E一R图转换为关系时,其中的实体和联系都可以表示为( )。(C)
A. 属性
B. 键
C. 关系
D. 域
解析:E—R图中的实体和联系都可以转换为关系,E—R图中的属性也可以转换为关系的属性。
11.关于程序设计结构的叙述中错误的是( )。(D)
A. 结构化程序设计提倡模块化的设计方法
B. 结构化程序由顺序、分支、循环三种基本结构组成
C. C语言是一种结构化程序设计语言
D. 使用三种基本结构构成的程序只能解决简单问题
解析:顺序、分支和循环三种基本结构不仅可以解决简单问题,也可以解决非常复杂的问题,所以D错误,其他选项叙述正确。
12.以下四个程序中,完全正确的是( )。
B
解析:C语言的注释是/*content*/,或//用来注释一行,因此A和C错,选项D中的include前面没有#,所以语法错。
13.设int x=5,则表达式x一=x+x的值为( )。(C)
A. 0
B. 一10
C. 一5
D. 5
解析:因为赋值运算符的优先级仅高于逗号运算符,所以x一=x+x可以写成是x=x一(x+x)=-x,所以结果是C。
14.C程序中合法的用户标识符的是( )。(A)
A. _0_
B. 1_a
C. int
D. unsigned
解析:选项C和D是关键字,选项B开头使用了数字,所以不合法,只有选项A是合法的。
15.下列规格的数在C语言源程序中不合法的是( )。(D)
A. 十进制
B. 八进制
C. 十六进制
D. 二进制
解析:C语言源程序可以使用十进制、十六进制和八进制,但不能使用二进制,二进制是在程序编译成可执行文件后的数据格式。
16.有以下程序:
#include
main()
{intx=10,y=5;
printf(’’%d,’’,y=x+y);
printf(’’%d\n’’,x=2*y);
}
程序运行后的输出结果是( )。(A)
A. 15,30
B. 10,30
C. 5,10
D. 5,15
解析:程序运行期间的变量只保存最新赋的值,所以y=x+y=10+5=15,此时y的值已经更新为15了,所以第二个打印命令中x=2*y=2*15=30。
17.有以下程序:
#include
main()
{int al,a2;char c1,c2;
scanf(’’%d%c%d%c’’,&a1,&e1,&a2,&c2);
printf(’’%d,%d,%c,%c’’,a1,a2,c1,c2);
}
若想通过键盘输入,使得输出结果是:12,34,a,b。则正确的输入格式是(以下]代表空格,代表回车)( )。(B)
A. 12〕a34〕b
B. 12a34b
C. 12,a,34,b〕
D. 12〕a〕34]b
解析:scanf和printf会严格按照格式进行输入或输出,本题中scanf中没有非格式字符,因此,所有的输入均会被接收,所以选项B正确。
18.关于分支语句if(E)printf(’’%d\n’’,k);中,不可以替代E的表达式是( )。(A)
A. ab+c
B. ch=getchar()
C. a==b+c
D. a++
解析:在数学上有时候会使用表示不等于,但在C语言中没有这种表达方式,所以A的表达
本文档预览:3600字符,共14800字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载