2020全国计算机等级考试二级C语言知识点全套复习提纲(精华版).pdf
《2020全国计算机等级考试二级C语言知识点全套复习提纲(精华版).pdf》由会员分享,可在线阅读,更多相关《2020全国计算机等级考试二级C语言知识点全套复习提纲(精华版).pdf(165页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国计算机等级考试二级C语言全套复习提纲(精华版)目录第一部分公共基础知识第 1 章算法与数据结构 . 1 考点 1 算法. 1考点 2 数据结构 . 1 考点 3 线性表及其顺序存储结构 . 1 考点 4 栈和队列 . 1 考点 5 线性链表 . 2 考点 6 树与二叉树 . 2 考点 7 查找技术 . 3 考点 8 排序技术 . 3 第 2 章 程序设计基础 .4 考点 1 程序设计方法与风格 . 4考点 2 结构化程序设计. 5考点 3 面向对象的程序设计 . 5第 3 章 . 软件工程基础5 考点 1 软件工程基本概念. 5考点 2 软件分析方法 6 考点 3 结构化设计方法. 7考点
2、 4 软件测试 . 8考点 5 程序的调试 . 9第 4 章数据库设计基础 . 9 考点 1 数据库系统的基本概念 . 9 考点 2 数据库系统的基本概念 . 10 考点 3 关系代数 . 12 考点 4 数据库设计与管理 . 12 第二部分二级C 语言第 1 章程序设计基本概念 . 14 考点 1 程序设计 . 14 考点 2 C 程序的结构和格式 . 14 考点 3 常量和变量 .14 考点 4 算术表达式 .15 考点 5 赋值表达式 .16 考点 6 自加、自减和逗号运算 .16 第 2 章顺序结构 .17 考点 1 字符型常量与变量.17 考点 2 putchar 与getchar
3、函数 . 17 考点 3 printf 函数 . 17 考点 4 scanf 函数. 18 考点 5 位运算的含义和应用 .18 第 3 章选择结构 .19 考点 1 关系运算符和关系表达式 .19 考点 2 逻辑运算符和逻辑表达式 .19 考点 3 if 语句及其构成的选择结构 .19 考点 4 switch 语句与break 语句.20 第 4 章循环结构 .20 考点 1 while 循环结构.20 考点 2 do-while 循环结构.21 考点 3 for 循环结构 21 考点 4 嵌套循环语句 21 第 5 章 函数 . 21 考点 1 库函数 .21 考点 2 函数的调用 .22
4、 考点 3 参数传递 .22 考点 4 函数的递归调用.23 考点 5 局部、全局变量和存储分类 . 23 第 6 章地址与指针 .23 考点 1 变量的地址和指针 . 23 考点 2 指针变量的操作 . 24 考点 3 函数之间地址的传递 . 24 第 7 章数组. 24 考点 1 一维数组的定义及元素的引用 . 24 考点 2 函数对一维数组及元素的引用 . 25 考点 3 二维数组的定义 . 25 考点 4 二维数组和指针.25 考点 5 二维数组名和指针数组作为实参 . 26 第 8 章 字 符串 .26 考点 1 用一维字符数组存放字符串 .26 考点 2 使指针指向字符串.26 考
5、点 3 字符串的输入和输出 .26 考点 4 字符串数组 .27 考点 5 用于字符串处理的函数 .27 第 9 章 编译预处理和动态存储分配 .27 考点 1 编译预处理 .27 考点 2 宏替换 .27 考点 3 文件包含处理 . 28 考点 4 动态存储分配 . 28 第 10 章结构体、共用体和用户定义类型 28 考点 1 结构体 . 28 考点 2 共用体 . 29 考点 3 用户定义类型 . 29 第 11 章 文件. 29 考点 1 文件指针 . 29 考点 2 文件的读写 .30 - 1 - 第一部分公共基础知识第1 章算法与数据结构考点 1 算法1什么是算法算法是指对解题方案
6、的准确而完整的描述。计算机程序本质上就是一个算法,它告诉计算机确切的步骤来执行一个指定的任务。(1)算法的基本特征一般来说,算法应具有:可行性、确定性、有穷性、拥有足够的情报这几个特征。(2)算法的组成要素通常,一个算法由两部分组成:一是对数据对象的运算和操作,二是算法的控制结构。2算法的复杂度算法的复杂度是算法规模的度量,一个算法的复杂度高低体现在运行该算法所需要的计算机资源的多少,所需的资源越多,就说明该算法的复杂度越高;反之,所需的资源越少,则该算法的复杂度越低。算法复杂度包括算法第一部分公共基础知识- 2 - 的时间复杂度和算法的空间复杂度。考点 2 数据结构1数据结构的概念所谓数据结
7、构是指由某一数据对象及该对象中所有数据成员之间的关系组成的集合。成员之间的关系有很多种,最常见的是前后件关系。2数据的逻辑结构(1)逻辑结构的定义数据的逻辑结构,是指反映数据之间逻辑关系的数据结构。对于电脑上的数据而言,逻辑结构就是能够用眼睛看到的数据形式,包括在屏幕上看到的文本、图片、视频等。(2)逻辑结构的分类根据数据结构中各元素之间前后关系的复杂程度,将数据的逻辑结构分成线性结构和非线性结构。一个非空的线性结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件。3数据的存储结构数据的存储结构也称为- 3 - 数据的物理结构,是指数据在计算机中存放的方式,
8、包括数据元素的存储和关系的存储。通常,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链式存储结构。考点 3 线性表及其顺序存储结构1线性表的基本概念线性表是由n 个数据元素组成的有限序列,是最简单、最常用的数据结构。其中的数据元素有着广泛的含义,可以是一个单独的数字或字母,可以是矩阵中的一行或一列向量,也可以是二维表中的一条记录。线性表是一种线性结构。数据元素在线性表中的位置,只取决于它们自己的序号,即数第一部分公共基础知识- 4 - 据元素之间的相对位置是线性的。2线性表的顺序存储结构一种数据的逻辑结构根据需要可以表示成多种存储结构。线性表的存储结构常用的是顺序存储
9、,也称为顺序分配。线性表的顺序存储结构具有以下两个基本特点:线性表中所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。3顺序表的插入所谓“顺序表”指的是使用顺序存储结构的线性表。在顺序表中插入一个新的数据元素,就像是在排队买票的时候进来了一个插队的人。4顺序表的删除在顺序表中删除一个数据元素,就像是在排队买票的时候其中的一个人离开了。在平均情况下,要在线性表中删除一个元素,需要移动线性表中一半的数据元素。考点 4 栈和队列- 5 - 1栈及其基本运算(1)什么是栈栈是一种特殊的线性表。在这种特殊的线性表中,其插入和删除运算都只能在线性表的一端进行。一端是封闭
10、的,不允许插入和删除数据元素;另一端是敞开的,允许插入和删除数据元素。在栈中,允许插入和删除数据元素的一端称为栈顶,而不允许插入和删除数据元素的一端称为栈底。栈顶元素总会是被最后插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。栈具有记忆的功能, 支持子程序的调用。通常用指针 top 来指示栈顶位置,用指针bottom 来指示栈底的位置。往栈中插入一个元素称为入栈运算,从栈中删除一第一部分公共基础知识- 6 - 个元素称为退栈运算。通过栈顶指针 top 来反反映栈中元素的动态变化情况。(2)栈
11、的基本运算栈的基本运算有3 种:入栈、退栈与读栈顶元素。入栈运算。入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top 加 1),然后将新元素插入到栈顶指针指向的位置。退栈运算。退栈运算是指取出栈顶元素并赋给指定的变量。这个运算有两个基本操作:首先将栈顶元素赋值给一个指定的变量,然后将栈顶指针退一(即top 减1) 。读栈顶元素。读栈顶元素是指将栈顶元素赋给一个指定的变量,但是不删除栈顶元素。因此,在这个运算中,栈顶指针不会改变。当栈顶指针为0 时,说明栈空,读不到栈顶元素。2队列及其基本运算(1)什么是队列队列是指允许在表的一端进行插入、而在另一端进行删
12、除的线性表。允许- 7 - 插入的一端称为队尾,通常用一个队尾指针(rear)指向队尾元素,队尾指针总是指向最后被插入的元素;允许删除的一端称为排头(也称为队头) ,通常也用一个排头指针(front)指向排头元素的前一个位置。(2)循环队列及其运算队列的顺序存储结构一般采用循环队列的形式。所谓的循环队列,就是将队列的存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。入队运算。入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rera+1 ), 并当rear=m+1 时置 rear=1 ;然后将新元素插入到队尾指针指向的
13、位置。退队运算。退队运算是指在循环队列的排头位置退出一个元素并赋值给指定的变量。这个运算有两个基本操作:首先将排头指针进一(即front=front+1),并当第一部分公共基础知识- 8 - front=m+1 时置 front=1;然后将排头指针指向的元素赋给指定的变量。考点 5 线性链表1线性链表(1)线性链表线性表的链式存储结构称为线性链表。在线性链表中,存储空间上的每一个存储结点都要分成两部分:一部分用于存储数据元素的值,称为数据域;另一部分用于存储该数据元素的存储序号(存储结点的地址,即指向后件结点) ,称为指针域。(2)线性链表的查找在非空的线性链表中查找指定元素的操作:从头指针指
14、向的结点开始往后沿着指针进行扫描,如果找到要查找的内容,则查找成功; 如果没有- 9 - 对应的要查找的元素,则查找失败。为了弥补线性单链表的这个缺点,对线性链表中的每个结点设置两个指针,一个称为左指针(Llink ),用以指向其前件结点;另一个称为右指针( Rlink ),用来指向其后件结点。这样的线性表称为双向链表。(3)线性链表的插入在向线性链表中插入一个新元素之前,我们先要给该元素分配一个新结点,其中包括值域和指针域以便用于存储该元素的值。然后找到插入位置,将插入位置前件的指针指向新结点,将新接点的指针指向插入位置后件的结点。(4)线性链表的删除要从线性表中删除一个元素,首先将要删除元
15、素的前后件两个指针断开,然后把要删除结点的前件的指针,指向删除结点后的数据元素。2循环链表循环链表与单链表唯一的不同,就是最后一个结点的指针域中的值不同。单链表的最后一第一部分公共基础知识- 10 - 个结点的指针域存放的是一个空指针,而循环链表的最后一个结点的指针域存放的是指向第一个结点的指针。考点 6 树与二叉树1树的基本概念树是一种比较简单的非线型结构。在树中所有的数据元素之间具有明显的层次关系。之所以将这种数据结构命名为“树”,是因为其结构看上去像一棵倒长着的树。在树的图形表示中,上端的结点是前件,下端的结点是后件。2二叉树及基本性质(1)二叉树二叉树是一种特殊的树,是一种很有用的非线
16、型结构。所有树结构上的术语都可以用在二叉树上。二叉树具有以下两个特征: 非空二叉树只有一个根结点; 每个结点最多有两棵子树,- 11 - 且分别称为该结点的左子树和右子树。在二叉树中,每个结点的度最大为2,所有的左子树和右子树也均是二叉树。同时,在二叉树中所有的结点可以没有左子树,也可以没有右子树。即没有左子树又没有右子树的结点是叶子结点。(2)满二叉树所谓满二叉树是指:除最后一层外,每一层上的所有结点都有两个子结点。这就是说,在满二叉树中,每一层上的结点数都达到最大值,即满二叉树的第k 层上有 2k-1 个结点,且深 度 为m 的满二叉树有2m-1 个结点。(3)完全二叉树所谓的完全二叉树是
17、指:除最后一层外,每一层上的结点数均达到最大值,最后一层上只缺少右边的若干个结点。完全二叉树就是去掉最后一层若干个右边结点的满二叉树。(4)二叉树的基本性质第一部分公共基础知识- 12 - 二叉树的基本性质。二叉树具有以下几个基本性质:性质 1:在二叉树的第K 层 上 最 多有2k-1(k1)个结点。性质 2:深度为m 的二叉树最多有 2m-1 个结点。性质 3:在任意一棵二叉树中,叶子结点(即度为0 的结点),总比度为 2 的结点多一个。性质4:具有 n 个结点 的二叉树,其深度至少为log2n+1。完全二叉树的两项特性。完全二叉树还具有以下两项特性:性质5:具有 n 个结点的完全二叉树,其
18、深度为log2n+1。性质 6:设完全二叉树共有n 个结点。如果从根结点开始,按层序(每一层从左到右)用自然数“ 1,2, ,n”给结点进行编号。3二叉树的遍历二 叉树 的 遍历 是指 按照 一 定的顺 序 访问 二叉树中的结点,每个结点只被访问一次。为了保证所有结点被不重不漏地访问,必须按照一定的顺序进行。(1)前序遍历(DLR )- 13 - 首先访问根结点,然后遍历左子树,最后遍历右子树;在遍历左、右子树时,也按上述的顺序执行。可见前序遍历二叉树是一个递归的过程。对于二叉树的前序遍历,具有如下的规则:对于空的二叉树,不进行操作返回空值。对于非空的二叉树的遍历按下列顺序执行:访问根结点;前
19、序遍历左子树;前序遍历右子树。(2)中序遍历(LDR )首先遍历左子树,然后访问根结点,最后遍历右子树;在遍历左、右子树时,也按上述的顺序执行。可见中序遍历二叉树也是一个递归的过程。对于二叉树的中序遍历,具有的规则:对于空的二叉树,不进行操作返回空值。对于非空的二叉树的遍历按下列顺序执行:中序遍历左子树;访问根结点;中序遍历右子树。(3)后序遍历(LRD )首先遍历左子树,然第一部分公共基础知识- 14 - 后遍历右子树,最后访问根结点;在遍历左、右子树时,也按上述的顺序执行。可见后序遍历二叉树同样也是一个递归的过程。对于二叉树的后序遍历,具有的规则:对于空的二叉树,不进行操作返回空值。对于非
20、空的二叉树的遍历按下列顺序执行:后序遍历左子树;后序遍历右子树;访问根结点。考点 7 查找技术查找就是从给定的一个数据结构中,找出指定的数据元素。本节中我们只学习对线性表的查找,常用的查找方法有顺序查找和二分法查找。1顺序查找顺序查找的过程是:从线性表的第一个元素开始,依次将线性表中的数据与要查找的数据进行比较,如果找到了相等的数据,则查找成功,停止向下查找;如果比较完了线性表中的所有数据元素,没有找到相等的数据,则查找失败。- 15 - 2二分法查找二分法查找又称为折半查找,只能应用于顺序存储的有序表。有序表是指线性表中的元素已经按值非递减(从整体上看是升序,但相邻的元素的值可以相同)排列。
21、考点 8 排序技术排序就是将一组无序的数据按照一定的顺序排列起来。本节中所指的顺序是非递减顺序(整体上呈升序,但相邻的数据可以相等),基本排序算法主要有交换类排序、插入类排序和选择类排序 3 大类。1交换类排序交换排序就是借助数据元素之间的互相交换进行排序的方法。常用的交换排序方法有冒泡排序和快速排序。(1)冒泡排序冒泡排序的过程简单,它的基本思想是通第一部分公共基础知识- 16 - 过对相邻元素进行比较,并根据比较的结果交换位置,从而逐步由任意序列变为有序序列。过程是:先从头往后扫描、然后从后往头扫描、再重复上述过程(2)快速排序快速排序就是一种可以通过一次交换而消除多个逆序的排序方法,因此
22、相对冒泡排序法而言,速度要快。2插入类排序插入排序,就是将无序序列中的各个元素依次插入到已经排好序的线性表中。常用的插入排序的方法有简单插入排序和希尔排序。(1)简单插入排序简单插入排序的方法是:在初始序列中,将只包含第 1 个元素的子序列看成是一个有序序列,然后从第 2 个元素起,依次将每个元素插入到前1 个有序子序列中。(2)希尔排序希尔排序的基本思想是:将整个无序序列分割成若干个子序列,对每个子序列分别进行简单插入排序,- 17 - 最后再对全体元素进行一次简单插入排序。与简单插入排序的子序列构成方式不同,希尔排序是将原序列中相隔某个增量h 的元素构成一个子序列。在排序过程中逐步减少这个
23、增量,最后当h 减到 1 时,进行一次 插入排序,排序就完成了。增量序列一般取hi = n/2k (k=1,2, , log2n) ,其中 n 为待排序序列 的长度。希尔排序的效率与所选取的增量序列有关。通过希尔排序法对长度为n 的线性表进行排序,如果选取了上述增量序列,最坏情况下,需要比较的次数为 O(n1.5)。3选择类排序常用的选择排序有两种,简单选择排序和堆排序。(1)简单选择排序简单选择排序的基本步骤是:在一组 n 个数据中选择出最小值;若它不是这组数据中的第1 个数据,则将它与这组数据中的第1 个数据互换位置;对第一部分公共基础知识- 18 - 剩下的子表采用同样的方法,直到子表空
24、为止。(2)堆排序法在学习堆排序之前,我们先来看一下堆的定义,堆的定义如下:具有 n 个元素的序列(h1,h2,hn) ,当且仅当满足或(i=1,2, ,n/2)时称之为堆。第 2 章程序设计基础考点 1 程序设计方法与风格程序是一组计算机指令的集合,是程序设计的最终成果。程序设计方法所要做的工作是,如何对实际问题进行抽象和归纳以及对程序进行编排,才能使程序的可读性、稳定性、- 19 - 可维护性、效率等更好。目前,主要有两种程序设计方法:结构化程序设计和面向对象程序设计。1源程序文档化符号名的命名:符号名的命名应尽量表达一些实际意义,以增强程序的可读性。程序注释:良好的注释能够帮助读者理解程
25、序。注释一般分为序言性注释和功能性注释,以给出程序的整体说明和程序的主要功能。序言性注释一般位于每一个程序的开头部分,它给出程序的整体说明;功能性注释一般嵌在原程序之中。视觉组织:为使程序的结构清晰明了, 可以在程序中利用空行、空格、缩进等技巧使程序层次清晰。2数据说明的方法在编写程序时,一定要注意数据说明的方法。为使程序中的数据说明易于理解和维护。3语句的结构程序的语句应该简单易懂,在编写程序时,应注重:每一行只写一条第一部分公共基础知识- 20 - 语句。程序编写优先考虑清晰性。一般情况下,在编写程序时, 要做到清晰第一,效率第二。首先要保证程序的正确性,然后再提高速度。避免使用临时变量而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2020 全国 计算机等级考试 二级 语言 知识点 全套 复习 提纲 精华版
限制150内