内容发布更新时间 : 2024/12/24 0:45:38星期一 下面是文章的全部内容请认真阅读。
C语言模拟考试错题集2
注:绿色字体代表有技巧性或我认为重要的题,蓝色字体代表不懂得题。
1.下列叙述中正确的是( )。
A) 循环队列是队列的一种链式存储结构 B) 循环队列是队列的一种顺序存储结构 C) 循环队列是非线性结构 D) 循环队列是一种逻辑结构
B 【解析】在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
2.下列关于线性链表的叙述中,正确的是( )。
A) 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B) 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C) 进行插入与删除时,不需要移动表中的元素 D) 以上说法均不正确
C 【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。
3.一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为( ) A) 16 B) 10 C) 6 D) 4
A 【解析】根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中度为2的结点是5-1=4个,所以度为1的结点的个数是25-5-4=16个。
4.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。 A) 外模式 B) 内模式 C) 概念模式 D) 逻辑模式
B 【解析】数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B)。
5.在满足实体完整性约束的条件下( )。
A) 一个关系中应该有一个或多个候选关键字 B) 一个关系中只能有一个候选关键字 C) 一个关系中必须有多关键字个候选 D) 一个关系中可以没有候选关键字
A 【解析】实体完整性约束要求关系的主键中属性值不能为空值,所以选择A)。
6.下面描述中,不属于软件危机表现的是( )。 A) 软件过程不规范 B) 软件开发生产率低 C) 软件质量难以控制 D) 软件成本不断提高
A 【解析】软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A)。
7.在黑盒测试方法中,设计测试用例的主要根据是( )。 A) 程序内部逻辑 B) 程序外部功能 C) 程序数据结构 D) 程序流程图
B 【解析】黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择B)。
8.在软件设计中不使用的工具是( )。 A) 系统结构图 B) PAD图
C) 数据流图(DFD图) D) 程序流程图
C 【解析】系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C)。
9.以下程序的输出结果是( )。
main() {
int a=20;
printf(\,%o,%x\\n\,a,a,a); }
A) 20, 024,0x14 B) 20, 24,14 C) 20, 0x14,024 D) 20, 20,20
A 【解析】本题的考查点是不同格式的数据输出。printf函数对不同类型的数据用不同的格式字符,\是以带符号的十进制形式输出整数(正数不输出符号);\以八进制无符号形式输出整数(不包括前导符0);\以十六进制无符号形式输出整数(不包括前导符0x)。
在使用标准输入输出库函数(除了printf和scanf)前,必须要用预编译命令\将头文件\包括到用户源文件中。调用printf函数时可以没有输出项,比如printf(\是允许的。C语言中整数的输出形式中没有十二进制的形式。getchar函数读入字符时可以得到第一个输入字符的ASCII码,无法通过输入相应字符的ASCII得到该字符。
10.若有以下说明和语句,请选出哪个是对c数组元素的正确引用( )。
int c[4][5],(*cp)[5]; cp=c; A) cp+1 B) *(cp +3) C) *(cp +1)+3 D) *(* cp+2)
D 【解析】本题的考查点是数组元素的引用。cp=c这个语句是将数组c的首行元素地址赋给了指针数组cp。选项A),cp+1是指将数组c的首行地址加1,即为第二行地址;选项B),*(cp+3)是地址,等于数组c的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项C),*(cp+1)+3是地址,等于数组c的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。
11.有以下程序:
#include
main(){ char p[20]={'a','b','c','d'},q[]=\,r[]=\; strcat(p,r);strcpy(p+strlen(q),q); printf(\,strlen(p)); }
程序运行后的输出结果是( )。
A) 9 B) 6 C) 11 D) 7
B 【解析】本题考查的是用于字符串处理的函数。题目中首先通过strcat(p,r)将r所指字符串的内容连接到p所指的字符串后面,p[20]={‘a’,‘b’,‘c’,‘d’,‘a’,‘b’,‘c’,‘d’,‘e’}。