国家二级C语言机试(选择题)模拟试卷317
选择题
1.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为( )。(C)
A. 6
B. 8
C. 9
D. 12
解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。
2.下列叙述中正确的是(B)
A. 有一个以上根结点的数据结构不一定是非线性结构
B. 只有一个根结点的数据结构不一定是线性结构
C. 循环链表是非线性结构
D. 双向链表是非线性结构
解析:在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。
3.某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的深度(根结点在第1层)为( )。(C)
A. 2
B. 3
C. 4
D. 5
解析:二叉树的前序序列为ABCDEFG,则A为根结点;中序序列为DCBAEFG,可知结点D、C、B位于根结点的左子树上,结点E、F、G位于根结点的右子树上。另外,结点B、c、D在前序序列和中序序列中顺序相反,则说明这三个结点依次位于前一个结点的左子树上;结点E、F、G顺序未变,则说明这三个结点依次位于前一个结点的右子树上。故二叉树深度为4。
4.在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个数为(A)
A. 0或1
B. 0
C. 1
D. 队列满
解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作。而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的链式存储也称为链队列。为了便于操作,可给链队列添加1个头结点,并令头指针指向头结点。队列为空的判断条件是头指针和尾指针的值相同,且均指向头结点。当队列为空(0)或1时,front=rear。
5.以下叙述中错误的是( )。(A)
A. 使用3种基本结构构成的程序只能解决简单问题
B. 结构化程序由顺序、分支、循环3种基本结构组成
C. C语言是一种结构化程序设计语言
D. 结构化程序设计提倡模块化的设计方法
解析:使用顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A选项错误。
6.下列叙述中错误的是(D)
A. 向量是线性结构
B. 非空线性结构中只有一个结点没有前件
C. 非空线性结构中只有一个结点没有后件
D. 只有一个根结点和一个叶子结点的结构必定是线性结构
解析:线性结构是n个数据元素的有序(次序)集合。①集合中必存在唯一的一个“第一个元素”;②集合中必存在唯一的一个“最后的元素”;③除最后元素之外,其它数据元素均有唯一的“后件”;④除第一元素之外,其它数据元素均有唯一的“前件”。相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。向量符合线性结构特点。非线性结构也会存在只有一个根结点和叶子结点的情况。
7.下列各排序法中,最坏情况下的时间复杂度最低的是(A)
A. 堆排序
B. 快速排序
C. 希尔排序
D. 冒泡排序
解析:堆排序法,最坏情况需要O(nlog2n)次比较。相比以上几种“除希尔排序法外”,堆排序法的时间复杂度最小,故选项A正确。
8.以下程序的输出结果是( )。
#include
void prt(int*x,int*y,int*z)
{printf(\\(B)
A. 11,42,31
12,22,41
B. 11,41,20
12,42,20
C. 11,21,40
11,21,21
D. 11,41,21
12,42,22
解析:本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函数“prt(&a,&b,&c);”,此函数中的输出语句“printf(\\
9.在软件生命周期中,能准确确定软件系统必须做什么和必须具备哪些功能的阶段是(D)
A. 概要设计
B. 详细设计
C. 可行性分析
D. 需求分析
解析:软件需求是指用户对目标软件系统在功能、行为、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。
10.设有定义:int x=2;,以下表达式中,值不为6的是( )。(A)
A. 2*x,x+=2
B. x++,2*x
C. X*=(1+x)
D. x*=x+1
解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A选项。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,再执行第二个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x*(1+x)=2*(1+2)=6。D选项中的表达式可以表示为x=x*(x+1)=2*3=6。
11.以下叙述中正确的是(C)
A. a表示一个字符常量
B. ’\0’表示字符0
C. 表达式:’a’>’b’的结果是“假”
D. ’\\\
解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较,’a’>’b’不成立,值为假。而’\0’表示NULL,ASCII码值为0。
12.有以下程序
main(){
int x=1,y=0,a=0,b=0
switch(x){
case 1:switch(y){
case 0:a++;break;
case 1:b++;break;}
case 2:a++;b++;break;
case 3:a++;b++;}
printf(\\(D)
A. a=2,b=2
B. a=1,b=1
C. a=1,b=0
D. a=2,b=1
解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case 1中进行嵌套判断.如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。
13.下列对于软件测试的描述中正确的是(C)
A. 软件测试的目的是证明程序是否正确
B. 软件测试的目的是使程序运行结果正确
C. 软件测试的目的是尽可能多地发现程序中的错误
D. 软件测试的目的是使程序符合结构化原则
解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正确功能。
14.有以下程序
main
本文档预览:3600字符,共12434字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载