无纸化真考试题库第37套1.算法的时间复杂度是指A) 设计该算法所需的工作量B) 执行该算法所需要的时间C) 执行该算法时所需要的基本运算次数D) 算法中指令的条数参考答案:C算法的时间复杂度是指执行算法所需要的计算工作量。
它与算法程序执行的具体时间并不一致,因为算法执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中许多细节的影响。
算法的计算工作量是用算法所执行的基本运算次数来度量的。
故选C选项2.设循环队列存储空间为Q(1:50),初始状态为front=rear=50。
经过一系列入队和退队操作后,front=rear=25,则该循环队列中元素个数为A) 26B) 25C) 24D) 0或50参考答案:D循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。
循环队列长度为50,由初始状态为front=rear=50可知此时循环队列为空。
入队运算时,首先队尾指针rear进1(即rear+1),然后在队尾指针rear 指向的位置插入新元素。
特别的,当队尾指针rear=50+1时,置rear=1。
退队运算时,排头指针front进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=50+1时,置front=1。
若经过运算,front=rear可知队列空或者队列满,则队列中有0或者50个元素。
故选D选项3.某棵树的度为4,且度为4、3、2、1的结点数分别为1、2、3、4,则该树中的叶子结点数为A) 11B) 9C) 10D) 8参考答案:A由题目可以知道,若四种度的结点分开成子树,共包含结点(4+1)+2×(3+1)+3×(2+1)+4×(1+1)=30个,当组合成一棵树时,任选一个度不为0的结点作为根结点,则新的树结点个数为30-2-3-4=21个,则该树中叶子结点个数为21-1-2-3-4=11。
故选择A选项。
4.设某二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为A) HGFEDCBAB) EFGHABCDC) DCBAHGFED) ABCDEFGH参考答案:A二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。
二叉树的前序序列与中序序列相同,说明此树结点没有左子树,且第一个节点A为根节点,而后序遍历中根节点应在最后被访问,即节点A在最后出现,由此推断出后序遍历为HGFEDCBA,故A选项正确5.下列叙述中正确的是A) 二分查找法适用于任何存储结构的有序线性表B) 二分查找法只适用于顺序存储的有序线性表C) 二分查找法适用于有序循环链表D) 二分查找法适用于有序双向链表参考答案:B二分法查找也称拆半查找,能使用二分法查找的线性表必须满足两个条件:顺序存储结构以及线性表有序。
循环链表和双向链表都不是顺序存储结构,故B选项正确。
6.下列序列中不满足堆条件的是A) (98,95,93,96,89,85,76,64,55,49)B) (98,95,93,94,89,85,76,64,55,49)C) (98,95,93,94,89,90,76,64,55,49)D) (98,95,93,94,89,90,76,80,55,49)参考答案:A若有n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆:大根堆,所有结点的值大于或等于其左右子结点的值;小根堆,所有结点的值小于或等于其左右子结点的值。
B、C、D选项属于大根堆,A选项由于98>95,判断属于大根堆,但95<96,不满足条件,不是堆,故选择A选项7.下面属于面向对象方法中对象基本特点的是A) 多态性B) 方法唯一性C) 可修改性D) 灵活性参考答案:A对象的基本特点如下:由上表可知,本题选A选项8.下面可以作为软件需求分析工具的是A) 包图B) 程序流程图C) PAD图D) 数据流程图(DFD图)参考答案:D需求分析方法可以分为结构化分析方法和面向对象的分析方法,结构化分析工具包括:数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等。
选项B中的程序流程图和选项C中的PAD图是过程设计工具,选项A中的包图用于UML面向对象建模。
故选D选项9.数据库的数据模型分为A) 层次、关系和网状B) 网状、环状和链状C) 大型、中型和小型D) 线性和非线性参考答案:A数据库的数据模型分为层次、关系和网状三种。
其中:用树形结构表示实体及其之间联系的模型称为层次模型,模型中结点是实体,树枝是联系,从上到下是一对多的关系。
用网状结构表示实体及其之间联系的模型称为网状模型,它是层次模型的扩展,表示多个从属关系的层次结构,呈现一种交叉关系。
关系模型的数据结构非常单一,在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。
故本题选A选项。
10.数据库系统的数据独立性是指A) 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序B) 不会因为数据的变化而影响应用程序C) 不会因为存储策略的变化而影响存储结构D) 不会因为某些存储结构的变化而影响其他的存储结构参考答案:A数据库系统的数据独立性,是指数据库中数据独立于应用程序且不依赖于应用程序,即数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。
故选A选项。
11.以下叙述正确的是A) C程序由函数组成,可以不包含main函数B) 每个C程序文件中的main函数都应当放在最前面C) 每个C程序文件都应当包含一个main函数D) 每个C程序都只能有一个main函数参考答案:D虽然一个C程序可以包含多个文件,但是有且只有一个文件中包含main函数,因此,选项A,C 错误。
main函数可以放在程序的任意位置。
因此,选项B错误。
答案为D选项。
12.以下叙述错误的是A) 计算机可以直接识别由十六进制代码构成的程序B) 可以连续执行的指令的集合称为"程序"C) "程序"是人与计算机"对话"的语言D) 计算机可以直接识别由0和1组成的机器语言代码参考答案:A计算机只能识别机器码,机器码是由二进制构成的,因此只能识别二进制构成的代码程序,不可以直接识别由十六进制代码构成的程序,十六进制的代码必须转为二进制才能在计算机上直接执行。
因此选项A错误13.以下与数学表达式 "0<x<5且x≠2" 不等价的C语言逻辑表达式是A) (0<x<5) && (x!=2)B) 0<x && x<5 && x!=2C) x>0 && x<5 && x!=2D) (x>0 && x<2) || (x>2 && x<5)参考答案:A0<x<5在C语言里不能这样直接表达,需要分步骤来实现,一般使用x>0&&x<5来描述。
在C语言0<x<5属于一个逻辑运算表达式,可以理解为(0<x)<5,因此选项A错误。
故答案为A选项14.以下选项中与 ( !a== 0 )的逻辑值不等价的表达式是A) ( a== !0 )B) aC) (a>0 || a<0)D) (a!= 0 )参考答案:A!与==运算,!的优先级高于==,即等价于(!a)==0。
如果a≠0,则表达式为真,否则表达式为假,因此可以验证选项,只有选项A不符合。
故答案为A选项。
15.变量math和engl中存放了两门课的成绩。
若两门课成绩均在60分以上(含60),则显示"pass";有一门低于60分则显示"fail",以下不能实现上述功能的程序段是A) if(math<60)if(engl<60)printf("fail\n");elseprintf("pass\n");B) if(math<60)printf("fail\n");elseif(engl>=60)printf("pass\n");elseprintf("fail\n");C) if ((math<60) ||(engl<60))printf("fail\n");elseprintf("pass\n");D) if ((math>=60) && (engl>=60))printf("pass\n");elseprintf("fail\n");参考答案:A选项A,当math≥60,没有输出pass,同时当math<60,engl≥60,程序输出pass,这些案例都是与题目的原意不符合的,因此选项A错误。
选项B、C、D,都可以正确输出。
故答案为A选项16.设有以下程序段main( ){ int x[M][N];Arrlet(x);...}则作为函数Arrlet的形参,以下表示形式非法的是A) int x[M][ ]B) int (*x)[N]C) int x[ ][N]D) int x[M][N]参考答案:AC语言规定,二维数组作为实参参数传递时,形参必须要指明二维数组的列数,否则函数内无法识别数组的宽度,行数提供没有任何作用。
(*p)[N]与p[][N]以及p[M][N]效果一样。
排除法A选项17.有以下程序#include <stdio.h>void fun( int n ){if( n/2 ) fun(n/2);printf("%d",n%2 );}main(){ fun( 10 ); printf("\n"); }程序运行后的输出结果是A) 0101B) 1000C) 1100D) 1010参考答案:D函数fun()的作用是求一个整数的二进制数。
通过辗转相除法获取一个整数的二进制。
因此1010=10102,故答案为D选项。
18.有以下程序#include <stdio.h>void fun(char *a,char *b){ char *s=a;while(*s) s++;s--;while(s>=a){ *b=*s; s--; b++; }*b='\0';}main(){ char s1[]="abc",s2[6];fun(s1,s2);}程序运行后的输出结果是A) cbaabcB) abcC) cbaD) abccba参考答案:C函数fun()实现的功能是:将第一个参数指向的字符串逆序的赋值给第二个参数,fun ()首先循环至第一个参数的末端,再从后至前,循环的赋值给第二个参数,因此第二个参数里的内容和第一个参数内容的逆序。