国家二级C语言机试(选择题)模拟试卷391
选择题
1.下列描述中不属于软件特点的是( )。(D)
A. 软件是一种逻辑实体,具有抽象性
B. 软件在使用中不存在磨损、老化问题
C. 软件复杂性高
D. 软件使用不涉及知识产权
解析:软件不像硬件一样具有实物的特性,而是一种逻辑实体,具有抽象性;开发复杂性高,成本昂贵;在运行、使用期间不存在磨损、老化问题。故A、B和C选项正确。由于软件是一种知识产品,受知识产权法的保护,所以D选项不正确。
2.下列叙述中正确的是(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 以上三项均正确
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
3.按照“后进先出”原则组织数据的数据结构是(B)
A. 队列
B. 栈
C. 双向链表
D. 二叉树
解析:栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。即栈是按照“后进先出”(Last In First Out,简称LIFO)或“先进后出”(First In Last Out,简称FILO)的原则组织数据的。因此,栈也称为“后进先出表”或“先进后出”表。
4.有二又树如下图所示:
(A)
A. ABDEGCFH
B. DBGEAFHC
C. DGEBHFCA
D. ABCDEFGH
解析:前序遍历首先访问根结点,然后遍历左子树,最后遍历右子树;在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。故本题前序序列是ABDEGCFH。
中序遍历首先遍历左子树,然后访问跟结点,最后遍历右子树;在遍历左、右子树时,仍然先遍历左子树,然后访问跟结点,最后遍历右子树。故本题的中序序列是DBGEAFHC。
后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点;在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。故本题的后序序列是DGEBHFCA。
5.以下叙述中正确的是( )。(A)
A. 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
B. 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同
C. 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
D. 指针变量之间不能用关系运算符进行比较
解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存储单元,选项A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B错。语句p=0和p=NULL是一样的,都是把一个空指针赋给指针变量p,故选项C错。指针之间能进行关系运算,比较的是地址值的大小,选项D错。答案选A。
6.下列叙述中正确的是(D)
A. 栈是一种先进先出的线性表
B. 队列是一种后进先出的线性表
C. 栈与队列都是非线性结构
D. 以上三种说法都不对
解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。
7.设顺序表的长度为16,对该表进行简单插入排序。在最坏情况下需要的比较次数为( )。(A)
A. 120
B. 60
C. 30
D. 15
解析:简单插入排序在最坏情况下,即初始排序序列是逆序的情况下,比较次数为n(n-1)/2,移动次数为n(n-1)/2。本题中n=16,16×(16-1)÷2=8÷15=120。
8.下列数据结构中,能用二分法进行查找的是(A)
A. 顺序存储的有序线性表
B. 线性链表
C. 二叉链表
D. 有序线性链表
解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序(即从小到大,但允许相邻元素值相等)的表。
9.下列结构中为非线性结构的是(A)
A. 树
B. 向量
C. 二维表
D. 矩阵
解析:线性结构是一个有序数据厄素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。常见的非线性结构有:二维数组,多维数组,广义表,树二叉树等),图。
10.设表的长度为n。在下列结构所对应的算法中,最坏情况下时间复杂度最低的是(D)
A. 堆排序
B. 有序链表查找
C. 希尔排序
D. 循环链表中寻找最大项
解析:在循环链表中寻找最大项算法是,首先取出第一个数作为最大数,然后和后面的所有项进行比较查找。因此,比较次数为n-1。
11.若有以下定义,则对数组元素的正确引用是( )。
int a[5],*p=a;(D)
A. *&a[5]
B. (*a)+2
C. *p+4
D. *(a+2)
解析:本题考查通过指针引用数组元素。选项A)、C)没有这种引用形式;选项B),(*a)+2与*a+2相同,表示第一个元素的值加2;选项D),*(a+2)引用数组的第3个元素。
12.与数学表达式x≥y≥z对应的C语言表达式是(B)
A. (x>=y>=z)
B. (x>=y)&&(y>=z)
C. (x>=y)!(y>=z)
D. (x>=y)‖(y>=x)
解析:若要表示x大于等于y.同时y大于等于z,需要用逻辑与表达式连接。
13.若变量已正确定义,则语句s=32;s^=32;pfintf(\\(B)
A. -1
B. 0
C. 1
D. 32
解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果为1,否则结果为0,题目中两个值相同,所以结果为0。
14.数据库设计过程不包括(D)
A. 概念设计
B. 逻辑设计
C. 物理设计
D. 算法没汁
解析:数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计。
15.以下叙述中错误的是( )。(A)
A. 书写风格良好的程序执行效率高
B. 书写风格良好的程序易读性好
C. C程序可以在一行上写多条语句
D. C程序允许将一条语句分写在多行上
解析:程序的执行效率和程序的时间复杂度和空间复杂度有关,而良好的书写风格仅能增加程序的可读性,所以答案选A。
16.以下选项中不能用作C程序合法常量的是(B)
A. ’\123’
B. 1,234
<本文档预览:3600字符,共11586字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载