没有合适的资源?快使用搜索试试~ 我知道了~
全国计算机等级考试《二级c++语言程序设计》【教材精讲+真题解析】讲义与视频课程0p.docx
需积分: 0 7 浏览量
2023-02-07
13:27:05
上传
评论
收藏 1.02MB DOCX 举报
。。。
资源推荐
资源详情
资源评论










全国计算机等级考试
《二级 C++语言程序设计》【教材精讲+真题解析】
讲义与视频课程
最新资料,WORD 格式,可编辑修改!
目 录

教材精讲部分[视频讲解]
第一部分 公共基础知识[视频讲解]
考试形式
1.公共基础知识不单独考试,与其他二级科目组合在一起,作为二级科目
考核内容的一部分。
2.考试方式为上机考试,10 道选择题,占 10 分。
大纲基本要求
1.掌握算法的基本概念。
2.掌握基本数据结构及其操作。
3.掌握基本排序和查找算法。
4.掌握逐步求精的结构化程序设计方法。
5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。
6.掌握数据库的基本知识,了解关系数据库的设计。
知识点分布
1.数据结构与算法
2.程序设计基础
3.软件工程基础
4.数据库设计基础
第 1 章 数据结构与算法[视频讲解]
本章考点
1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。
2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;
线性结构与非线性结构的概念。
3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。
4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。
5.线性单链表、双向链表与循环链表的结构及其基本运算。
6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后
序遍历。
7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,
插入类排序)。
第一节 算 法
一、算法的基本概念
1.算法的定义
算法是指解题方案的准确而完整的描述,即算法是对特定问题求解步骤的
一种描述。
*算法不等于程序,也不等于计算方法。
2.算法的基本特征
(1)可行性(Effectiveness)
①算法中的每一个步骤必须能够实现。
②算法执行的结果要能够达到预期的目的。
(2)确定性(Definiteness)

算法的确定性,是指算法中的每一个步骤都必须是有明确定义的,不允许
有模棱两可的解释,也不允许有多义性。
(3)有穷性(Finiteness)
算法的有穷性是指算法必须能在有限的时间内做完,即算法必须能在执行
有限个步骤之后终止。
*算法的有穷性还应包括合理的执行时间
(4)拥有足够的情报
①输入是否足够并正确,输出是否合理。
②初始状态是否正确。
二、算法设计基本方法
1.列举法
(1)基本思想
根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些
是需要的,哪些是不需要的。
(2)特点
简单,方便用计算机进行大量列举;情况较多时,工作量将会很大。
(3)使用
将与问题有关的知识条理化、完备化、系统化,从中找出规律,进行分类,
减少列举量。
例 1.1 今有鸡母一,值钱三;鸡翁一,值钱二;鸡雏一,值钱半。凡百钱
买百鸡,问鸡母、鸡翁、鸡雏各几何?
假设买母鸡 I 只、公鸡 J 只、小鸡 K 只。根据题意,粗略的列举算法描述
如下:
FOR I=0 TO 100 STEP 1 DO
FOR J=0 TO 100 STEP 1 DO
FOR K=0 TO 100 STEP 1 DO
{
IF((I+J+K==100)AND(
PRINT I,J,K
3*I+2*J+0.5*K==100.0))THEN
}
END
共有三层循环,每层循环各需要循环 101 次,大约为 100 万次。
优化后的算法
FOR I=0 TO 33 STEP 1DO
FOR J=0 TO 50-1.5*I STEP 1 DO
{
K=100-I-J
IF(3*I+2*J+0.5*K==100.0)THEN
PRINT I,J,K
}
END

共有两层循环,循环次数为
2.归纳法
(1)基本思想
通过列举少量的特殊情况,经过分析最后找出一般的关系。
(2)特点
归纳是一种抽象,即从特殊现象中找出一般关系。
(3)使用
由于在归纳的过程中不可能对所有的情况进行列举。因此,最后由归纳得
到的结论还只是一种猜测,还需要对这种猜测加以必要的证明。实际上,通过
精心观察而得到的猜测得不到证实或最后证明猜测是错的,也是常有的事。
3.递推
(1)基本思想
从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。
(2)特点
本质上属于归纳法,递推关系式往往是归纳的结果。
(3)使用
递推算法在数值计算中是极为常见的。但
是,对于数值型的递推算法必须要注意数值计算的稳定性问题。
4.递归 *
(1)基本思想
为了降低问题的复杂程度,将问题逐层分解,最后归结为一些最简单的问
题,这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解
决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合。
(2)特点
结构清晰,可读性强。
(3)使用
递归在可计算性理论和算法设计中占有很重要的地位。
(4)分类
直接递归(自己调用自己)和间接递归(P 调用 Q,Q 又调用 P)。
例 1.2 编写一个过程,对于输入的参数 n,依次打印输出自然数 1 到 n。
非递归算法:
wrt(int n)
{
FOR k=1 TO n STEP 1 DO PRINT k
RETURN
}
递归算法:
wrt1(int n)
{
IF(n≠0)THEN
{

wrt1(n-1)PRINT n
}
RETURN
}
5.减半递推技术
所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推”,
是指重复“减半”的过程。
例 1.3 设方程 f(x)=0 在区间[a,b]上有实根,且 f(a)与 f(b)异号。
利用二分法求该方程在区间[a,b]上的一个实根。
用二分法求方程实根的减半递推过程如下:
首先取给定区间的中点 c=(a+b)/2。
然后判断 f(c)是否为 0。
若 f(c)=0,则说明 C 即为所求的根,求解过程结束;
如果 f(c)≠0,则根据以下原则将原区间减半:
若 f(a)f(c)<0,则取原区间的前半部分;
若 f(b)f(c)<0,则取原区间的后半部分。
最后判断减半后的区间长度是否已经很小:
若|a-b|<ε,则过程结束,取(a+b)/2 为根的近似值;
若|a-b|≥ε,则重复上述的减半过程。
6.回溯法
(1)基本思想
通过对问题的分析,找出一个解决问题的线
索,然后沿着这个线索逐步试探,对于每一步的试探,若试探成功,就得
到问题的解,若试探失败,就逐步回退,换别的路线再进行试探。这种方法称
为回溯法。
(2)特点
在工程上,有些实际问题很难归纳出一组简单的递推公式或直观的求解步
骤,并且也不能进行无限的列举。对于这类问题,一种有效的方法是“试”。
三、算法复杂度
主要包括时间复杂度和空间复杂度。
1.算法的时间复杂度
(1)定义
执行算法所需要的计算工作量。
(2)衡量标准
通常用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
算法所执行的基本运算次数还与问题的规模有关。
综上所述,算法的工作量用算法所执行的基本运算次数来度量,而算法所
执行的基本运算次数是问题规模的函数,即算法的工作量=f(n)。
(3)存在问题
算法所执行的基本运算次数还可能与特定的输入有关,而实际上又不可能
将所有可能情况下算法所执行的基本运算次数都列举出来。
剩余268页未读,继续阅读
资源评论

lengyue815
- 粉丝: 473
- 资源: 3294

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
