二级C语言公共基础知识复习与配套选择题.docx
《二级C语言公共基础知识复习与配套选择题.docx》由会员分享,可在线阅读,更多相关《二级C语言公共基础知识复习与配套选择题.docx(17页珍藏版)》请在冰豆网上搜索。
![二级C语言公共基础知识复习与配套选择题.docx](https://file1.bdocx.com/fileroot1/2023-1/4/edb24376-7878-4f53-b0d0-7dfed546df12/edb24376-7878-4f53-b0d0-7dfed546df121.gif)
二级C语言公共基础知识复习与配套选择题
全国计算机等级考试二级C语言
公共基础知识复习与配套练习题
第一章数据结构与算法
算法是一组严谨的定义运算顺序的规则,是指令的有限序列。
计算机程序就是按解题要求从计算机指令系统中选择合适的指令所组成的指令序列。
基本运算:
算术运算、逻辑运算、关系运算、数据传输。
控制结构:
算法中各操作之间的执行顺序。
算法设计的基本方法:
列举法、归纳法、递推、递归、减半递推、回溯法。
算法设计的要求:
正确性、可读性、健壮性、效率与低存储量需求。
算法的时间复杂度,是指执行算法所需要的计算工作量。
取决于问题的规模与待处理的数据的初态。
平均性态:
是指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。
数据结构:
指相互之间存在一种或多种特定关系的数据元素的集合,即数据的组织形式。
提高数据处理效率:
1提高数据处理的速度2节省存储空间
数据的逻辑结构:
集合、线性结构、树形结构、图形结构。
两个要素:
数据元素的集合D,数据元素之间的前后关系R。
数据的存储结构:
数据的逻辑结构在计算机存储空间中的存放形式。
(物理结构)常用的存储结构有顺序、链接、索引等。
空的数据结构:
在一个数据结构中一个数据元素都没有。
根据前后关系的复杂程度(从逻辑上),可将数据结构分为两大类型:
线性结构(线性表)、非线性结构。
线性结构与非线性结构都可以是空的数据结构。
线性表是n个属于同一数据类型的数据元素构成的有限序列。
若干数据项组成的数据元素称为记录,多个记录构成的线性表称为文件。
I为数据元素ai再线性表中的位序。
线性表的顺序表:
用一组地址连续的存储单元依次存储线性表的数据元素。
线性表的顺序存储结构是一种随机存取的存储结构(一维空间)。
栈:
实际也是线性表。
是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。
没有元素时为空栈。
栈顶元素总是后被插入的元素,也是最先被删除的元素。
称为“先进后出”“后进先出”表。
栈的顺序存储及其运算:
1、入栈运算:
在栈顶位置插入一个新元素。
先将栈顶指针加1,然后将新元素插入到栈顶指针指向的位置。
2、退栈运算:
取出栈顶元素并赋给一个指定的变量。
首先将栈顶元素赋给一个指定的变量,然后将栈顶指针减1。
3、读栈顶元素:
将栈顶元素赋给一个指定的变量。
不删除栈顶元素,栈顶指针不会改变。
队列:
是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。
“先进先出”“后进后出”表。
往尾部插入一个元素称为入队运算。
从排头删除一个元素称为退队运算。
循环队列及其运算:
队列的顺序存储结构一般采用循环队列的形式。
将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
1、入队运算:
在循环队列的队尾加入一个新元素。
2、退队运算:
在队头位置推出一个元素并赋给指定的变量。
线性链表:
只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
链表中结点的逻辑次序和物理次序不一定相同。
树:
由n个结点组成的有限集合。
若不为空树,则:
1、由一个特定的称为根的结点,只有直接后件,没有直接前件。
2、出根以外的其他结点可以划分为m个互不相交的有限集合,每个集合又是一棵树,称为根的子树,每棵子树的根结点有且仅有一个直接前件,但可以有0或多个直接后件。
一个结点所拥有的后件个数称为结点的度。
树的最大层次称为树的深度。
二叉树:
是由n个结点的有限集合构成,集合为空集或由一个根结点及两棵相互不相交的左右子树组成,左右子树都是二叉树。
二叉树不是树的特殊情况,是两个概念。
特点:
非空二叉树只有一个根结点;在而二叉树中不存在度大于二的结点,是有序树(树为无序树),子树的顺序不能颠倒。
叶子结点总是比度为2的结点多一个。
完全二叉树结点的排列顺序为:
从上到下,从左到右。
若左边空一个位置不能将结点放入右边。
完全二叉树除最后一排都是满的。
在计算机中,二叉树通常采用链式存储结构。
遍历二叉树:
1.前序遍历:
根结点-左子树-右子树(在遍历左右子树时,仍然先访问根结点)2、中序遍历:
左子树-根结点-右子树(左大树都遍历了再右大树)3、后序遍历:
左子树-右子树-根结点
排序方法
时间复杂度
空间复杂度
复杂性
平均情况
最坏情况
最好情况
直接插入排序
N2
N2
n
1
简单
冒泡排序
N2
N2
n
1
简单
希尔排序
Nlog2n
Nlog2n
1
较复杂
快速排序
Nlog2n
N2
Nlog2n
Nlog2n
较复杂
简单选择排序
N2
N2
N2
1
简单
堆排序
Nlog2n
Nlog2n
Nlog2n
1
较复杂
第二章程序设计基础
程序设计经历的阶段:
结构化程序设计阶段、面向对象的程序设计阶段。
*程序注释:
1、序言性注释:
开头部分,给出程序的整体说明。
2、功能性注释:
嵌在源程序体中,描述语句或程序的主要功能,不包括模块的功能。
注意:
*编写程序要做到清晰第一,效率第二;*即在正确的基础上再要求提高效率。
模块化,使模块功能尽可能单一化(eg.函数实现);模块的独立性,利用信息隐蔽,确保每一个模块的独立性(eg.局部变量)。
对所有输入要检验输入数据的合法性;输入成批数据时,应有输入结束标志;
*结构化程序设计四条原则:
自顶向下、逐步求精、模块化、限制使用goto语句。
三种基本控制结构:
顺序、选择和循环
结构化程序设计的优缺点优点:
易读、易理解、易维护、结构良好;缺点:
面向过程、可重用性差
面向对象的方法:
系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。
一个对象应包括数据和需要进行的操作。
对象就是一个包含数据以及与这些数据有关的操作的集合。
面向对象优点:
稳定性好、易修改、易理解、易于测试和调试。
最大区别是:
数据与操作结合。
*对象:
由一组表示其静态特征的属性和它可执行的一组操作(对象的动态特征)组成。
*对象特征:
对象标识唯一;分类性;多态性;封装性;模块独立性好。
消息:
对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明,它统一了数据流与控制流。
种类:
共有消息、私有消息。
消息的使用类似函数的调用,消息中指定了某一实例,一个操作名和一个参数表。
*继承:
是指能够直接获得已有的性质和特征。
而不必重复定义他们。
分为单继承和多重继承。
继承性是类所具有的性质,对象没有继承性。
多态性:
是指同样的消息被不同的对象接受时可导致完全不同的行动。
消息是指对类的成员函数的调用。
不同的行为是指不同的实现,即调用不同的函数。
第三章软件工程基础
软件定义:
与计算机系统的操作有关的计算机程序、规程、规律,以及可能有的文件、文档及数据。
包括程序、数据及相关文档的完整集合。
特点:
不是物理实体,有抽象性;常受计算机系统的限制;复杂性高,成本昂贵。
分类(按功能):
系统软件、工具软件、应用软件。
*软件危机主要表现在成本、质量、生产率等问题。
*软件工程包括三要素:
方法、工具和过程。
软件生命周期:
将软件从提出、实现、使用维护到停止使用退役的过程称为软件周期。
(定义、开发、维护三大阶段)
软件工程研究的内容主要包括:
软件开发技术、软件工程管理。
*软件工程原则:
抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
需求分析阶段:
需求获取、需求分析、编写规格说明书、需求评审。
*结构化分析方法:
使用数据流图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的称为结构化规格说明书的目标文档。
实质:
着眼于软件内部数据流,自顶向下,逐层分解。
*数据流图和数据词典共同组成系统的逻辑模型。
结构化分析方法的开发过程:
计划期、开发期、运行期。
从技术观点看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
从工程管理角度看,软件设计分为两步:
概要设计和详细设计。
*模块划分的原则是模块独立性。
*衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准。
耦合:
是模块间互相连接的紧密程度的度量。
内聚:
是一个模块内部各个元素彼此结合的紧密程度的度量。
*划分模块尽量做到高内聚、低耦合,保持模块相对独立性。
软件测试方法:
静态测试、动态测试
测试用例的设计方法:
白盒测试方法、黑盒测试方法。
白:
有逻辑覆盖、基本路径测试。
黑:
也称功能测试或数据驱动测试。
单元测试:
是针对软件设计的最小单位——模块,进行正确性检验的测试工作。
目的在于发现各模块内部可能存在的各种错误。
集成测试:
是在单元测试的基础上,把所有模块按照设计要求组装成为系统,同时进行测试。
目的:
发现与接口有关的错误。
测试方式:
非增量方式和增量方式组装。
验收测试:
用黑盒测试法。
系统测试:
目的在真实的工作环境下检验软件是否与系统正确连接。
*程序调试的目的是诊断和改正程序中的错误,主要在开发阶段进行。
步骤:
错误定位——修改设计和代码——进行回归测试,
软件调试分为静态和动态调试。
方法:
1强行排错法2回溯法3原因排除法
第四章数据库基础
数据库DB数据库管理系统DBMS数据库系统DBS(数据库、数据库管理系统、人员、系统硬件平台、系统软件平台)
关系数据模型的基本结构是关系。
关系数据模型中数据的逻辑结构是二维表。
(以下略)
公共基础知识练习题
公共基础120题
<一>.选择题(共80个)
(1) 下面叙述正确的是______。
(C)
A. 算法的执行效率与数据的存储结构无关
B. 算法的空间复杂度是指算法程序中指令(或语句)的条数
C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
D. 以上三种描述都不对
(2) 以下数据结构中不属于线性数据结构的是______。
(C)
A. 队列
B. 线性表
C. 二叉树
D. 栈
(3) 在一棵二叉树上第5层的结点数最多是______。
(B)
A. 8
B. 16
C. 32
D. 15
(4) 下面描述中,符合结构化程序设计风格的是______。
(A)
A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B. 模块只有一个入口,可以有多个出口
C. 注重提高程序的执行效率
D. 不使用goto语句
(5) 下面概念中,不属于面向对象方法的是______。
(D)
A. 对象
B. 继承
C. 类
D. 过程调用
(6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。
(B)
A. 可行性分析
B. 需求分析
C. 详细设计
D. 程序编码
(7) 在软件开发中,下面任务不属于设计阶段的是______。
(D)
A. 数据结构设计
B. 给出系统模块结构
C. 定义模块算法
D. 定义需求并建立系统模型
(8) 数据库系统的核心是______。
(B)
A. 数据模型
B. 数据库管理系统
C. 软件工具
D. 数据库
(9) 下列叙述中正确的是______。
(C)
A. 数据库是一个独立的系统,不需要操作系统的支持
B. 数据库设计是指设计数据库管理系统
C. 数据库技术的根本目标是要解决数据共享的问题
D. 数据库系统中,数据的物理结构必须与逻辑结构一致
(10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。
(A)
A. 内模式
B. 外模式
C. 概念模式
D. 逻辑模式
(11) 算法的时间复杂度是指______。
(C)
A. 执行算法程序所需要的时间
B. 算法程序的长度
C. 算法执行过程中所需要的基本运算次数
D. 算法程序中的指令条数
(12) 下列叙述中正确的是______。
(A)
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。
(B)
A. 349
B. 350
C. 255
D. 351
(14) 结构化程序设计主要强调的是______。
(B)
A. 程序的规模
B. 程序的易读性
C. 程序的执行效率
D. 程序的可移植性
(15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。
(D)
A. 概要设计
B. 详细设计
C. 可行性分析
D. 需求分析
(16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
下列图符名标识的图符不属于数据流图合法图符的是______。
(A)
A. 控制流
B. 加工
C. 数据存储
D. 源和潭
(17) 软件需求分析阶段的工作,可以分为四个方面:
需求获取、需求分析、编写需求规格说明书以及______。
(B)
A. 阶段性报告
B. 需求评审
C. 总结
D. 都不正确
(18) 下述关于数据库系统的叙述中正确的是______。
(A)
A. 数据库系统减少了数据冗余
B. 数据库系统避免了一切冗余
C. 数据库系统中数据的一致性是指数据类型的一致
D. 数据库系统比文件系统能管理更多的数据
(19) 关系表中的每一横行称为一个______。
(A)
A. 元组
B. 字段
C. 属性
D. 码
(20) 数据库设计包括两个方面的设计内容,它们是______。
(A)
A. 概念设计和逻辑设计
B. 模式设计和内模式设计
C. 内模式设计和物理设计
D. 结构特性设计和行为特性设计
(21) 算法的空间复杂度是指______。
(D)
A. 算法程序的长度
B. 算法程序中的指令条数
C. 算法程序所占的存储空间
D. 算法执行过程中所需要的存储空间
(22) 下列关于栈的叙述中正确的是______。
(D)
A. 在栈中只能插入数据
B. 在栈中只能删除数据
C. 栈是先进先出的线性表
D. 栈是先进后出的线性表
(23) 在深度为5的满二叉树中,叶子结点的个数为______。
(C)
A. 32
B. 31
C. 16
D. 15
(24) 对建立良好的程序设计风格,下面描述正确的是______。
(A)
A. 程序应简单、清晰、可读性好
B. 符号名的命名要符合语法
C. 充分考虑程序的执行效率
D. 程序的注释可有可无
(25) 下面对对象概念描述错误的是______。
(A)
A. 任何对象都必须有继承性
B. 对象是属性和方法的封装体
C. 对象间的通讯靠消息传递
D. 操作是对象的动态性属性
(26) 下面不属于软件工程的3个要素的是______。
(D)
A. 工具
B. 过程
C. 方法
D. 环境
(27) 程序流程图(PFD)中的箭头代表的是______。
(B)
A. 数据流
B. 控制流
C. 调用关系
D. 组成关系
(28) 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是______。
(A)
A. 数据库系统
B. 文件系统
C. 人工管理
D. 数据项管理
(29) 用树形结构来表示实体之间联系的模型称为______。
(B)
A. 关系模型
B. 层次模型
C. 网状模型
D. 数据模型
(30) 关系数据库管理系统能实现的专门关系运算包括______。
(B)
A. 排序、索引、统计
B. 选择、投影、连接
C. 关联、更新、排序
D. 显示、打印、制表
(31) 算法一般都可以用哪几种控制结构组合而成______。
(D)
A. 循环、分支、递归
B. 顺序、循环、嵌套
C. 循环、递归、选择
D. 顺序、选择、循环
(32) 数据的存储结构是指______。
(B)
A. 数据所占的存储空间量
B. 数据的逻辑结构在计算机中的表示
C. 数据在计算机中的顺序存储方式
D. 存储在外存中的数据
(33) 设有下列二叉树:
对此二叉树中序遍历的结果为______。
(B)
A. ABCDEF
B. DBEAFC
C. ABDECF
D. DEBFCA
(34) 在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。
(D)
D. 消息
A. 调用语句
B. 命令
C. 口令
(35) 检查软件产品是否符合需求定义的过程称为______。
(A)
A. 确认测试
B. 集成测试
C. 验证测试
D. 验收测试
(36) 下列工具中属于需求分析常用工具的是______。
(D)
A. PAD
B. PFD
C. N-S
D. DFD
(37) 下面不属于软件设计原则的是______。
(C)
A. 抽象
B. 模块化
C. 自底向上
D. 信息隐蔽
(38) 索引属于______。
(B)
A. 模式
B. 内模式
C. 外模式
D. 概念模式
(39) 在关系数据库中,用来表示实体之间联系的是______。
(D)
A. 树结构
B. 网结构
C. 线性表
D. 二维表
(40) 将E-R图转换到关系模式时,实体与联系都可以表示成______。
(B)
A. 属性 B. 关系
C. 键
D. 域
41) 在下列选项中,哪个不是一个算法一般应该具有的基本特征______。
(C)
A. 确定性
B. 可行性
C. 无穷性
D. 拥有足够的情报
(42) 希尔排序法属于哪一种类型的排序法______。
(B)
A. 交换类排序法
B. 插入类排序法
C. 选择类排序法
D. 建堆排序法
(43) 下列关于队列的叙述中正确的是______。
(C)
A. 在队列中只能插入数据
B. 在队列中只能删除数据
C. 队列是先进先出的线性表
D. 队列是先进后出的线性表
(44) 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。
(B)
A. N+1
B. N
C. (N+1)/2
D. N/2
(45) 信息隐蔽的概念与下述哪一种概念直接相关______。
(B)
A. 软件结构定义
B. 模块独立性
C. 模块类型划分
D. 模拟耦合度
(46) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。
(C)
A. 模拟现实世界中不同事物之间的联系
B. 强调模拟现实世界中的算法而不强调概念
C. 使用现实世界的概念抽象地思考问题从而自然地解决问题
D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
(47) 在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。
(C)
A. 详细设计
B. 需求分析
C. 总体设计
D. 编程调试
(48) 软件调试的目的是______。
(B)
A. 发现错误
B. 改正错误
C. 改善软件的性能
D. 挖掘软件的潜能
(49) 按条件f对关系R进行选择,其关系代数表达式为______。
(C)
A. R|X|R
B. R|X|R
f
C. бf(R)
D. ∏f(R)
(50) 数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。
(D)
A. 自顶向下
B. 由底向上
C. 由内向外
D. 由整体到局部
(51) 在计算机中,算法是指______。
(C)
A. 查询方法
B. 加工方法
C. 解题方案的准确而完整的描述
D. 排序方法
(52) 栈和队列的共同点是______。
(C)
A. 都是先进后出
B. 都是先进先出
C. 只允许在端点处插入和删除元素
D. 没有共同点
(53) 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。
(A)
A. cedba
B. acbed
C. decab
D. deabc
(54) 在下列几种排序方法中,要求内存量最大的是______。
(D)
A. 插入排序
B. 选择排序
C. 快速排序
D. 归并排序
(55) 在设计程序时,应采纳的原则之一是______。
(A)
A. 程序结构应有助于读者理解
B. 不限制goto语句的使用
C. 减少或取消注解行
D. 程序越短越好
(56) 下列不属于软件调试技术的是______。
(B)
A. 强行排错法
B. 集成测试法
C. 回溯法
D. 原因排除法
(57) 下列叙述中,不属于软件需求规格说明书的作用的是______。
(D)
A. 便于用户、开发人员进行理解和交流
B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据
C. 作为确认测试和验收的依据
D. 便于开发人员进行需求分析
(58) 在数据流图(DFD)中,带有名字的箭头表示______。
(C) A. 控制程序的执行顺序
B. 模块之间的调用关系
C. 数据的流向
D. 程序的组成成分
(59) SQL语言又称为______。
(C)
A. 结构化定义语言
B. 结构化控制语言
C. 结构化查询语言
D. 结构化CAO纵语言
(60) 视图设计一般有3种设计次序,下列不属于视图设计的是______。
(B)
A. 自顶向下
B. 由外向内
C. 由内向外
D. 自底向上
(61) 数据结构中,与所使用的计算机无关的是数据的______。
(C)
A. 存储结构
B. 物理结构
C. 逻辑结构
D. 物理和存储结构
(62) 栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。
(D)
A. ABCED
B. DBCEA
C. CDABE
D. DCBEA
(63) 线性表的顺序存储结构和线性表的链式存储结构分别是______。
(B)
A. 顺序存取的存储结构、顺序存取的存储结构
B. 随机存取的存储结构、顺序存取的存储结构
C. 随机存取的存储结构、随机存取的存储结构
D. 任意存取的存储结构、任意存取的存储结构
(64) 在单链表中,增加头结点的目的是______。
(A)
A. 方便运算的实现
B. 使单链表至少有一个结点
C. 标识表结点中首结点的位置
D. 说明单链表是线性表的链式存储实现
(65) 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。
(B)
A. 模块间的关系
B. 系统结构部件转换成软件的过程描述
C. 软件层次结构
D. 软件开发过程
(66) 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。
(B)
A. PAD图
B. N-S图
C. 结构图
D. 数据流图
(67) 数据处理的最小单位是______。
(C)
A. 数据
B. 数据元素
C. 数据项
D. 数据结构
(68) 下列有关数据库的描述,正确的是______。
(C)
A. 数据库是一个