文档库 最新最全的文档下载
当前位置:文档库 › 2017全国计算机等级考试二级C语言知识点超全整(打印版)

2017全国计算机等级考试二级C语言知识点超全整(打印版)

2017全国计算机等级考试二级C语言知识点超全整(打印版)
2017全国计算机等级考试二级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)

考点4 软件测试 (8)

考点5 程序的调试 (9)

第4章数据库设计基础 (9)

考点1 数据库系统的基本概念 (9)

考点2 数据库系统的基本概念 (10)

考点3 关系代数 (12)

考点4 数据库设计与管理 (12)

第二部分二级C 语言

第1章程序设计基本概念 (14)

考点1 程序设计 (14)

考点2C程序的结构和格式 (14)

考点3 常量和变量 (14)

考点4 算术表达式 (15)

考点5 赋值表达式 (16)

考点6 自加、自减和逗号运算 (16)

第2章顺序结构 (17)

考点1 字符型常量与变量 (17)

考点2putchar与getchar 函数 (17)

考点3printf函数 (17)

考点4scanf函数 (18)

考点5 位运算的含义和应用 (18)

第3章选择结构 (19)

考点1 关系运算符和关系表达式 (19)

考点2 逻辑运算符和逻辑表达式 (19)

考点3 if语句及其构成的选择结构 (19)

考点4switch语句与break语句 (20)

第4章循环结构 (20)

考点1while循环结构 (20)

考点2do-while循环结构 (21)

考点3for循环结构 (21)

考点4 嵌套循环语句 (21)

第5 章函数 (21)

考点1 库函数 (21)

考点2 函数的调用 (22)

考点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)

考点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)

选择题考点秘籍—二级C 语言

第一部分公共基础知识第

1 章算法与数据结构

考点1 算法

1.什么是算法

算法是指对解题方案的准确而完整的描述。计算机程序本质上就是一个算法,它告诉计算机确切的步骤来执行一个指定的任务。

(1)算法的基本特征

一般来说,算法应具有:可行性、确定性、有穷性、拥有足够的情报这几个特征。

(2)算法的组成要素

通常,一个算法由两部分组成:一是对数据对象的运算和操作,二是算法的控制结构。

2.算法的复杂度

算法的复杂度是算法规模的度量,一个算法的复杂度高低体现在运行该算法所需要的计算机资源的多少,所需的资源越多,就说明该算法的复杂度越高;反之,所需的资源越少,则该算法的复杂度越低。算法复杂度包括算法的时间复杂度和算法的空间复杂度。

考点2 数据结构

1.数据结构的概念

所谓数据结构是指由某一数据对象及该对象中所有数据成员之间的关系组成的集合。成员之间的关系有很多种,最常见的是前后件关系。2.数据的逻辑结构

(1)逻辑结构的定义

数据的逻辑结构,是指反映数据之间逻辑关系的数据结构。对于电脑上的数据而言,逻辑结构就是能够用眼睛看到的数据形式,包括在屏幕上看到的文本、图片、视频等。

(2)逻辑结构的分类

根据数据结构中各元素之间前后关系的复杂程度,将数据的逻辑结构分成线性结构和非线性结构。一个非空的线性结构如果满足以下两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。3.数据的存储结构

数据的存储结构也称为数据的物理结构,是指数据在计算机中存放的方式,包括数据元素的存储和关系的存储。通常,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链式存储结构。考点3 线性表及其顺序存储结构

1.线性表的基本概念

线性表是由n 个数据元素组成的有限序列,是最简单、最常用的数据结构。其中的数据元素有着广泛的含义,可以是一个单独的数字或字母,可以是矩阵中的一行或一列向量,也可以是二维表中的一条记录。线性表是一种线性结构。数据元素在线性表中的位置,只取决于它们自己的序号,即数据元素之间的相对位置是线性的。

2.线性表的顺序存储结构

一种数据的逻辑结构根据需要可以表示成多种存储结构。线性表的存储结构常用的是顺序存储,也称为顺序分配。线性表的顺序存储结构具有以下两个基本特点:①线性表中所有元素所占的存储空间是连续的;②线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

3.顺序表的插入

所谓“顺序表”指的是使用顺序存储结构的线性表。在顺序表中插入一个新的数据元素,就像是在排队买票的时候进来了一个插队的人。4.顺序表的删除

在顺序表中删除一个数据元素,就像是在排队买票的时候其中的一个人离开了。在平均情况下,要在线性表中删除一个元素,需要移动线性表中一半的数据元素。

考点4 栈和队列

1.栈及其基本运算

(1)什么是栈

栈是一种特殊的线性表。在这种特殊的线性表中,其插入和删除运算都只能在线性表的一端进行。一端是封闭的,不允许插入和删除数据元素;另一端是敞开的,允许插入和删除数据元素。

在栈中,允许插入和删除数据元素的一端

称为栈顶,而不允许插入和删除数据元素的一

端称为栈底。栈顶元素总会是被最后插入的元素,从而也是最先被删除的元素;栈底元素总

是最先被插入的元素,从而也是最后才能被删

除的元素。即栈是按照“先进后出”或“后进

先出”的原则组织数据的。栈具有记忆的功能,

支持子程序的调用。通常用指针top 来指示栈顶位置,用指针bottom 来指示栈底的位置。往栈中插入一个元素称为入栈运算,从栈中删除一

第一部分公共基础知识

个元素称为退栈运算。通过栈顶指针top 来反反映

栈中元素的动态变化情况。

(2)栈的基本运算

栈的基本运算有3种:入栈、退栈与读栈顶

元素。①入栈运算。入栈运算是指在栈顶位置

插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新

元素插入到栈顶指针指向的位置。②退栈运算。退栈运算是指取出栈顶元素并赋给指定的变量。这个运算有两个基本操作:首先将栈顶元素赋

值给一个指定的变量,然后将栈顶指针退一(即top减1)。③读栈顶元素。读栈顶元素是指

将栈顶元素赋给一个指定的变量,但是不删除

栈顶元素。因此,在这个运算中,栈顶指针不

会改变。当栈顶指针为0时,说明栈空,读不到

栈顶元素。

2.队列及其基本运算

(1)什么是队列

队列是指允许在表的一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个队尾指针(rear)指向队尾元素,队尾指针总是指向最后被插入的元素;允许删

除的一端称为排头(也称为队头),通常也用一

个排头指针(front)指向排头元素的前一个位置。

(2)循环队列及其运算

队列的顺序存储结构一般采用循环队列

的形式。所谓的循环队列,就是将队列的存储

空间的最后一个位置绕到第一个位置,形成逻

辑上的环状空间,供队列循环使用。

①入队运算。入队运算是指在循环队列的

队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rera+1),并

当rear=m+1 时置rear=1;然后将新元素插入到队

尾指针指向的位置。②退队运算。退队运算是指

在循环队列的排头位置退出一个元素并赋值给指

定的变量。这个运算有两个基本操作:首先将排

头指针进一(即front=front+1),并当

front=m+1 时置front=1;然后将排头指针指向的元

素赋给指定的变量。

考点5 线性链表

1.线性链表

(1)线性链表

线性表的链式存储结构称为线性链表。在线性链表中,存储空间上的每一个存储结点都

要分成两部分:一部分用于存储数据元素的值,称为数据域;另一部分用于存储该数据元

素的存储序号(存储结点的地址,即指向后件

结点),称为指针域。

(2)线性链表的查找

在非空的线性链表中查找指定元素的操作:从头指针指向的结点开始往后沿着指针进行扫描,如果找到要查找的内容,则查找成功;如果

没有对应的要查找的元素,则查找失败。为了弥

补线性单链表的这个缺点,对线性链表中的每个

结点设置两个指针,一个称为左指针

(Llink),用以指向其前件结点;另一个称为

右指针(Rlink),用来指向其后件结点。这样

的线性表称为双向链表。

(3)线性链表的插入

在向线性链表中插入一个新元素之前,我们先要给该元素分配一个新结点,其中包括值域和指针域以便用于存储该元素的值。然后找到插入位置,将插入位置前件的指针指向新结点,将新接点的指针指向插入位置后件的结点。

(4)线性链表的删除

要从线性表中删除一个元素,首先将要删除

元素的前后件两个指针断开,然后把要删除结点

的前件的指针,指向删除结点后的数据元素。2.循环链表

循环链表与单链表唯一的不同,就是最后

一个结点的指针域中的值不同。单链表的最后

一个结点的指针域存放的是一个空指针,而循

环链表的最后一个结点的指针域存放的是指向

第一个结点的指针。

考点6 树与二叉树

1.树的基本概念

树是一种比较简单的非线型结构。在树中所有的数据元素之间具有明显的层次关系。之所以将这种数据结构命名为“树”,是因为其结构看上去像一棵倒长着的树。在树的图形表示中,上端的结点是前件,下端的结点是后件。

2.二叉树及基本性质

(1)二叉树

二叉树是一种特殊的树,是一种很有用的非线型结构。所有树结构上的术语都可以用在二叉树上。二叉树具有以下两个特征:① 非空二叉树只有一个根结点;② 每个结点最多有两棵子树,

选择题考点秘籍—二级C 语言

且分别称为该结点的左子树和右子树。在二叉树中,每个结点的度最大为2,所有的左子树和右子树也均是二叉树。同时,在二叉树中所有的结点可以没有左子树,也可以没有右子树。即没有左子树又没有右子树的结点是叶子结点。

(2)满二叉树

所谓满二叉树是指:除最后一层外,每一层上的所有结点都有两个子结点。这就是说,在满二叉树中,每一层上的结点数都达到最大值,即满二叉树的第k 层上有2k-1 个结点,且深度为m 的满二叉树有2m-1 个结点。

(3)完全二叉树

所谓的完全二叉树是指:除最后一层外,每一层上的结点数均达到最大值,最后一层上只缺少右边的若干个结点。

完全二叉树就是去掉最后一层若干个右边结点的满二叉树。

(4)二叉树的基本性质

①二叉树的基本性质。二叉树具有以下几个基本性质:性质1:在二叉树的第K 层上最多有2k-1(k≥1)个结点。性质2:深度为m 的二叉树最多有2m-1 个结点。性质3:在任意一棵二叉树中,叶子结点(即度为0 的结点),总比度为2 的结点多一个。性质4:具有n 个结点的二叉树,其深度至少为[log2n]+1。

②完全二叉树的两项特性。完全二叉树还具有以下两项特性:性质5:具有n 个结点的

完全二叉树,其深度为[log2n]+1。性质6:设完全二叉树共有n 个结点。如果从根结点开始,按层序(每一层从左到右)用自然数“1,2,…,

n”给结点进行编号。

3.二叉树的遍历

二叉树的遍历是指按照一定的顺序访问二叉树中的结点,每个结点只被访问一次。为了保证所有结点被不重不漏地访问,必须按照一定的顺序进行。

(1)前序遍历(DLR)

首先访问根结点,然后遍历左子树,最后遍

历右子树;在遍历左、右子树时,也按上述的顺序执行。可见前序遍历二叉树是一个递归的过程。对于二叉树的前序遍历,具有如下的规则:对于空的

二叉树,不进行操作返回空值。对于非空的二叉

树的遍历按下列顺序执行:①访问根结点;

②前序遍历左子树;③前序遍历右子树。

(2)中序遍历(LDR)

首先遍历左子树,然后访问根结点,最后遍

历右子树;在遍历左、右子树时,也按上述的顺

序执行。可见中序遍历二叉树也是一个递归的过程。对于二叉树的中序遍历,具有的规则:①对

于空的二叉树,不进行操作返回空值。②对于非

空的二叉树的遍历按下列顺序执行:中序遍历左

子树;访问根结点;中序遍历右子树。

(3)后序遍历(LRD)

首先遍历左子树,然后遍历右子树,最后

访问根结点;在遍历左、右子树时,也按上述

的顺序执行。可见后序遍历二叉树同样也是一

个递归的过程。对于二叉树的后序遍历,具有

的规则:①对于空的二叉树,不进行操作返回

空值。②对于非空的二叉树的遍历按下列顺序

执行:后序遍历左子树;后序遍历右子树;访

问根结点。

考点7 查找技术

查找就是从给定的一个数据结构中,找出指定的数据元素。本节中我们只学习对线性表的查找,常用的查找方法有顺序查找和二分法查找。

1.顺序查找

顺序查找的过程是:从线性表的第一个元素

开始,依次将线性表中的数据与要查找的数据进

行比较,如果找到了相等的数据,则查找成功,

停止向下查找;如果比较完了线性表中的所有数

据元素,没有找到相等的数据,则查找失败。

2.二分法查找

二分法查找又称为折半查找,只能应用于

顺序存储的有序表。有序表是指线性表中的元

素已经按值非递减(从整体上看是升序,但相

邻的元素的值可以相同)排列。

考点8 排序技术

排序就是将一组无序的数据按照一定的顺

序排列起来。本节中所指的顺序是非递减顺序(整体上呈升序,但相邻的数据可以相等),基

本排序算法主要有交换类排序、插入类排序和

选择类排序3 大类。

1.交换类排序

交换排序就是借助数据元素之间的互相交

换进行排序的方法。常用的交换排序方法有冒

泡排序和快速排序。

(1)冒泡排序

冒泡排序的过程简单,它的基本思想是通

第一部分公共基础知识

过对相邻元素进行比较,并根据比较的结果交换位置,从而逐步由任意序列变为有序序列。

过程是:先从头往后扫描、然后从后往头扫描、再重复上述过程

(2)快速排序

快速排序就是一种可以通过一次交换而消除多个逆序的排序方法,因此相对冒泡排序法而言,速度要快。

2.插入类排序

插入排序,就是将无序序列中的各个元素依次插入到已经排好序的线性表中。常用的插入排序的方法有简单插入排序和希尔排序。

(1)简单插入排序

简单插入排序的方法是:在初始序列中,将只包含第1 个元素的子序列看成是一个有序序列,然后从第2 个元素起,依次将每个元素插入到前1 个有序子序列中。

(2)希尔排序

希尔排序的基本思想是:将整个无序序列分割成若干个子序列,对每个子序列分别进行简单插入排序,最后再对全体元素进行一次简单插入排序。与简单插入排序的子序列构成方式不同,希尔排序是将原序列中相隔某个增量

h 的元素构成一个子序列。在排序过程中逐步减少这个增量,最后当h 减到1 时,进行一次插入排序,排序就完成了。增量序列一般取h i = n/2k (k=1,2,…,[log2n]),其中n 为待排序序列的长度。希尔排序的效率与所选取的增量序列有关。通过希尔排序法对长度为n 的线性表进行排序,如果选取了上述增量序列,最坏情况下,需要比较的次数为O(n1.5)。

3.选择类排序

常用的选择排序有两种,简单选择排序和堆排序。

(1)简单选择排序

简单选择排序的基本步骤是:

①在一组n 个数据中选择出最小值;②若它不是这组数据中的第1 个数据,则将它与这组数据中的第1 个数据互换位置;③对剩下的子表采用同样的方法,直到子表空为止。

(2)堆排序法

在学习堆排序之前,我们先来看一下堆的定义,堆的定义如下:

具有n个元素的序列(h1,h2,…,h n),当且仅当满足

(i=1,2,…,n/2)时称之为堆。

第2 章程序设计基础

考点1 程序设计方法与风格

程序是一组计算机指令的集合,是程序设计的最终成果。程序设计方法所要做的工作是,如何对实际问题进行抽象和归纳以及对程序进行编排,才能使程序的可读性、稳定性、可维护性、效率等更好。目前,主要有两种程序设计方法:结构化程序设计和面向对象程序设计。

1.源程序文档化

①符号名的命名:符号名的命名应尽量表达一些实际意义,以增强程序的可读性。②程序注释:良好的注释能够帮助读者理解程序。注释一般分为序言性注释和功能性注释,以给出程序的整体说明和程序的主要功能。序言性注释一般位于每一个程序的开头部分,它给出程序的整体说明;功能性注释一般嵌在原程序之中。③视觉组织:为使程序的结构清晰明了,可以在程序中利用空行、空格、缩进等技巧使程序层次清晰。

2.数据说明的方法

在编写程序时,一定要注意数据说明的方法。为使程序中的数据说明易于理解和维护。

3.语句的结构

程序的语句应该简单易懂,在编写程序时,应注重:每一行只写一条语句。程序编写优先考虑清晰性。一般情况下,在编写程序时,要做到清晰第一,效率第二。首先要保证程序的正确性,然后再提高速度。避免使用临时变量而使程序的可读性下降。尽可能使用库函数。避免不必要的转移。利用信息隐蔽,保证每一个模块的独立性。避免使用复杂的条件嵌套语句。避免使用无条件转移语句。尽量做到模块功能单一化。不要修补不好的程序,要重新编写。

4.输入和输出

输入和输出的方式应尽可能方便用户的使用。系统能否让用户接受,往往取决于输入和输出的风格。

选择题考点秘籍—二级C 语言

考点2 结构化程序设计

1.结构化程序设计的原则

结构化程序设计必须遵守模块化、自顶向下、逐步求精、限制使用goto 语句的原则。2.结构化程序设计的基本结构与特点

结构化程序设计方法是一种程序设计的先进方法。实事证明,在程序设计时,只要使用3 种程序结构就可以实现所有的结构形式,它们是顺序结构、选择结构和循环结构。3.结构化程序设计原则和方法的应用

结构化程序设计的效率较高,但是在实际设计程序时,应要注意:使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑。选用的控制结构只允许有一个入口和一个出口。程序语句组成容易识别的语句序列块,每块只允许有一个入口和一个出口。复杂结构的程序设计时,仅用嵌套的基本控制结构进行组合嵌套来实现。语言中所没有的控制结构,应采用前后一致的方法来模拟。严格控制goto 语句的使用,但不是完全不能用。

考点3 面向对象的程序设计

面向对象方法,现在已经发展为一种主流的软件开发方法。它历经了多年的研究和发展,已经日益成熟和完善,应用也越来越深入和广泛。

1.面向对象方法的特点

面向对象的程序设计,是在结构化程序设计的基础上,以更接近人们通常思维的方式来解决问题的一种全新的软件开发技术。

面向对象的程序设计以对象为核心,强调对象的“封装性”“继承性”“抽象性”和“多态性”。其本质就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物。

2.面向对象方法的基本概念

(1)对象(object)

面向对象方法认为:现实世界是由一系列的对象组成的。对象是现实世界中彼此相关并互通信息的实体。每个对象都包含了两部分的内容:描述对象状态的数据和描述对象行为。对象是面向对象方法中最基本的概念。因此,面向对象方法中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的整体。对象可以做的操作表示它的动态行为,在面向对象分析和面向对象设计中,通常把对象的操作也称为方法或服务。

(2)类和实例

类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反应属于该对象类型的所有对象的性质。

(3)消息(Message)

消息传递是对象间通信的手段,一个对象通过向另一对象发送信息来请求其服务。消息机制统一了数据流和控制流,一个消息由下述

3 部分组成:接收消息的对象名称、消息名、零个或多个参数。

(4)继承(Inheritance)

①类的继承:继承广义地说,是指能够直接获得已有的属性和特征,而不必重复地定义。②继承的传递性:继承具有传递性,如果类A 继承类B,类B 继承类C,则类A 继承类

C。因此,一个类实际上继承了它上层的全部基类特性,也就是说,属于某类的对象除了具有该类定义的特性外,还具有该类上层全部基类定义的特性。单继承:一个子类只有唯一的一个父类,这种继承称为单继承。多重继承:一个子类也可以有多个父类,它可以从多个父类中继承特性。③继承的优点:相似的对象可以共享程序代码和数据,从而大大减少了程序中的冗余信息,提高软件的可重用性,便于软件修改维护。

(5)多态性(Polymorphism)

多态性:对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行为,该现象称为多态性。

第3章软件工程基础

考点1 软件工程基本概念

1.软件的定义与特点

(1)软件的定义

一般认为计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。可见软件可分为两个部分:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用相关的文档。

(2)软件的特点

计算机软件具有如下的几个特点:软件是一种逻辑实体,而不是物理实体,具有抽象性;

第一部分公共基础知识

与硬件的生产不同,软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依赖性;软件复杂度高,成本昂贵;软件开发涉及诸多的社会因素。

(3)软件的分类

计算机软件按功能可分为3 类:应用软件、系统软件、支撑软件(或称为工具软件)。2.软件危机和软件工程

软件工程概念的出现源自软件危机。

(1)软件危机

“软件危机”是20 世纪60 年代末以后出现的,其泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。实际上,几乎所有的软件都不同程度地存在这些问题。

随着计算机技术的发展和应用领域的扩大,软件已经成为计算机科学发展的“瓶颈”。

(2)软件工程

为了消除软件危机,通过认真研究软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程概念,开辟了工程学的新兴领域——软件工程学。它是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术与当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。

3.软件工程过程与软件生命周期

(1)软件工程过程

ISO 9000 定义:软件工程过程是指把输入转化为输出的一组彼此相关的资源和活动。

(2)软件生命周期

软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。这些阶段可以有重复,执行时也可以有迭代。

4.软件工程的目标与原则

(1)软件工程的目标

软件工程的目标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。

为实现软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理两个方面。

(2)软件工程的原则

为了达到上述的软件工程目标,在软件开发过程中,必须遵循以下软件工程的基本原则:抽象、确定性、模块化、信息隐蔽、局部化、完备性、一致性、可验证性。

5.软件开发工具与软件开发环境

软件工程技术鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用进一步提高了软件的开发效率、维护效率和软件质量。

(1)软件开发工具

软件开发工具的发展是从单项工具的开发逐步向集成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。

(2)软件开发环境

软件开发环境或称软件工程环境是指全面支持软件开发全过程的软件工具的集合。计算机辅助软件工程(CASE)是当前软件开发环境中富有特色的研究工作和发展方向。

考点2 软件分析方法

软件开发方法是指软件开发过程所遵循的方法和步骤,其目的在于有效地得到一些工作产品,即满足质量要求的程序和文档。软件开发方法包括分析方法、设计方法和程序设计方法。

1.需求分析与需求分析方法

软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析的目标是创建所需的数据模型、功能模型和控制模型。

(1)需求分析的定义

1997 年IEEE 软件工程标准词汇表对需求分析定义如下:

①用户解决问题或达到目标所需的条件或功能;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或功能;③一种反映①或②所描述的条件或功能的文档说明。

(2)需求分析阶段的工作

需求分析阶段的工作主要分为4 个方面:需求获取、需求分析、编写需求规格说明书、

选择题考点秘籍—二级C 语言

需求评审。

(3)需求分析方法

常用的需求分析方法有两种:①结构化分

析方法。主要包括:面向数据结构的Jackson

方法(JSD),面向数据流的结构化分析方法(SA),面向数据结构的结构化数据系统开发

方法(DSSD)。②面向对象的分析方法(OOA)。从需求分析建立的模型的特性来分,需求分析

方法又分为静态分析方法和动态分析方法。2.结构化分析方法

(1)结构化分析方法的基本概念

结构化分析方法是面向数据流、自顶向下、逐步求精、进行需求分析的方法。该方法使用简单易读符号,根据软件内部数据传递、变换的关系,自顶向下、逐层分解,描绘出满足要求的软件模型。

(2)结构化分析的常用工具

结构化分析方法利用图形等结构化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分。这种方法所用的常用工具有:数据流图、数据字典、判定树和判定表。

3.软件需求规格说明书

软件需求规格说明书(SRS)是需求分析

阶段得出的最主要的文档。它通常用自然语言

完整、准确、具体地描述系统的数据要求、功

能需求、性能需求、可靠性和可用性要求、出

错处理需求、接口需求、约束、逆向需求以及

将来可能提出的要求。

①软件需求规格说明书的作用

软件需求规格说明书具有几个作用:便于

用户、开发人员进行理解和交流;反映出用户

问题的结构,可以作为软件开发工作的基础和

依据;作为确认测试和验收的依据。

②软件需求规格说明书的内容

软件需求规格说明书是作为需求分析的一部

分而制定的可交付文档。

③软件需求规格说明书的特点

软件需求规格说明书是确保软件质量的

有力措施,衡量软件需求规格说明书质量的标准:正确性、无歧义性、完整性、一致性、可

理解性、可验证性、可修改性和可追踪性。考

点3 结构化设计方法

1.软件设计的基本概念

(1)软件设计的基础

软件设计是一个把软件需求转化为软件表示的过程,是软件工程的重要阶段。软件设计的基本目标是用比较抽象、概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。

(2)软件设计的基本原理

软件设计应遵循软件工程的基本目标和原则,建立适用于在软件设计中应该遵守的基本原理和软件设计中的有关概念。

模块化、抽象、信息隐藏和局部化、模块独立性。

(3)结构化设计方法

结构化设计方法是目前采用最为广泛的一种软件设计方法,其基本思想是将软件设计成由相对独立、单一功能的模块组成的结构

2.概要设计

概要设计又称为总体设计或初步设计。软件概要设计的基本任务是:

①设计软件的系统结构。在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需

要进一步分解,划分为模块以及模块的层次结构。

②数据结构及数据库设计。数据设计是实现需求定义和规格说明过程中提出的数据对象的逻辑表示。

③编写概要设计文档。在概要设计阶段,需要编写

的文档有:概要设计说明书、数据库设计说明书、集中测试计划等。

④概要设计文档评审。在概要设计中,对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等都要进行评审,以免在以后的设计中出现大的问题而返工。

2.概要设计工具

结构图(SC),也称程序结构图,是描述软件结构的图形工具,是常用的软件结构设计工具。模块用一个矩形表示,矩形内注明模块的功能和名字;箭头或直线表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。常用的结构图有4 种模块类型:传入模块、传出模块、变换模块和协调模块。

3.面向数据流的设计方法

在需求分析阶段,主要是分析信息在系统中的加工和流动情况。面向数据流的设计方法的目标是给出设计软件结构的一个系统化的

第一部分公共基础知识

途径。

(1)数据流类型。典型的数据流类型有两种:变换型和事务型。

(2)面向数据流设计方法的实施要点与设计过程。

4.设计的准则

通过大量设计实践证明,以下设计准则可以借鉴为设计的指导和对软件结构图进行优化。

提高模块独立性、模块规模适中、深度、宽度、扇出和扇入适当、使模块的作用域在该模块的控制域内、应减少模块的接口和界面的复杂性、设计成单入口、单出口的模块和设计功能可预测的模块。

3.详细设计

详细设计的任务就是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。

常用的设计工具有以下几种:

(1)图形工具

①程序流程图:程序流程图是软件过程的设计表示工具,表达直观、清晰,易于学习和掌握。②N-S 图:N-S 图是用方框图来代替传统的程序流程图的技术。基本图形有5 种。③PAD 图:PAD 图即问题分析图(Problem AnalysisDiagram)。它是继程序流程图和方框图之后,提出的又一种描述软件详细设计的图形工具。基本图形有5 种。

(2)表格工具

用表格来描述处理动作及相应的各种条件或描述输入、处理、输出的过程。

(3)语言工具

用与程序设计语言很相近的伪码描述处理过程的细节。过程设计语言(PDL)也称为结构化的英语和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言的语法,类似编程语言。考点4 软件测试

软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误。它是对软件规格说明、设计和编码的最后复审。通常,软件测试的工作量往往占软件开发总工作量的40%以上。1.软件测试的目的

软测试的目的:测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试;测试是要以查找错误为中心,而不是为了演示软件的正确功能。

2.软件测试的准则

要作好软件测试,必须设计有效的测试方案和好的测试用例。

3.软件测试技术和方法

软件测试的方法是多种多样的。若从是否需要执行被测软件的角度划分,可以分为静态测试和动态测试;若按照功能划分,可以分为白盒测试和黑盒测试。

(1)静态测试与动态测试

①静态测试:静态测试包括代码检查、静态结构分析、代码质量度量等。静态测试主要由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。②动态测试:动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。

(2)白盒测试与测试用例设计

白盒测试的方法也称结构测试或逻辑测试。它是根据软件的内部工作过程,检查内部成分,以确认每种内部操作是否符合设计要求。白盒测试允许测试人员利用程序内部的逻辑结构及有关信息来设计和选择测试用例,对程序所有的逻辑路径进行测试。

①逻辑覆盖测试。逻辑覆盖测试泛指以程序内部的逻辑结构为基础的测试用例设计书。从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、判断-条件覆盖。

②基本路径测试。基本路径测试的思想和步骤是,根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试。

(3)黑盒测试与测试用例设计

黑盒测试也称功能测试或数据驱动测试,是对软件已经实现的功能是否满足需求进行测试和验证。所以,黑盒测试的测试用例是根据程序的外部功能进行设计的,在软件接口处进行,完成功能验证。

4.软件测试的实施

软件测试是保证软件质量的重要手段。为

选择题考点秘籍—二级C 语言

使软件测试工作系统化,我们应制定测试流程。所谓测试流程就是软件测试这个过程规定的程序。

软件测试过程一般按4 个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。

考点5 程序的调试

1.基本概念

在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。程序调试的任务是诊断和改正程序中的错误。

(1)程序调试的基本步骤

①错误定位:从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因。②修改设计和代码,以排除错误:排错是软件开发过程中一项艰苦的工作,这也决定了调试工作是一个具有很强技术性和技巧性的工作。③进行回归测试,防止引进新的错误:重复进行暴露这个错误的原始测试或某些有关测试,以确认该错误是否被排除、是否引进了新的错误。

(2)程序调试的原则

调试活动由对程序中错误的定性、定位和排错两部分组成,因此调试原则也从确定错误的性质和位置时的注意事项和修改错误的原则两个方面考虑。

2.软件测试方法

调试的关键在于推断程序内部的错误位置及原因。软件调试可以分为静态调试和动态调试。软件测试中讨论的静态分析方法同样适用静态调试。静态调试主要指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试的。主要的调试方法有强行排错法、回溯法和原因排除法。

第4 章数据库设计基础

考点1 数据库系统的基本概念

1.数据、数据库、数据库管理系统

(1)数据

数据:描述事物的符号记录。

计算机中的数据一般分成两部分,其中一部分与程序仅有短时间的交互关系,随着程序的结束而消亡,这样的数据称为临时性数据,一般存放在计算机内存中;而另一部分数据则对系统起着长期持久的作用,这样的数据称为持久性数据,一般存放在计算机的长期存储设

备(如硬盘)中。数据库系统中处理的就是这

种持久性数据。

(2)数据库

数据库:数据库(DataBase,DB)是指长

期存储在计算机内的、具有统一的结构形式、

可共享的数据集合。数据库中的数据按一定的

数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各

种应用程序所共享。

(3)数据库管理系统

数据库管理系统:数据库管理系统(DataBase Management System,DBMS)是管理

数据库的机构,是一个系统软件,负责数据库中

的数据组织、数据操纵、数据维护、控制及保护

和数据服务等。数据库管理系统是数据库系统的

核心,其主要功能包括几个方面:数据模式定义、数据存取的物理构建、数据操纵、数据的完整性、

安全性定义与检查、数据库的并发控制与故障恢

复和数据的服务。

(4)数据库管理员

数据库管理员:对数据库的规划、设计、

维护、监视等进行管理的人员,称为数据库管

理员。其主要工作:数据库设计、数据库维护

和改善系统性能。

(5)数据库系统

数据库系统(DBS)是指引入数据库后

的计算机系统,一般由数据库、数据库管理系统、应用系统、数据库管理员和用户构成。

(6)数据库应用系统

数据库应用系统(DBAS)是数据库系统再

加上应用软件及应用界面这三者所组成,具体包括:数据库、数据库管理系统、数据库管理员、

硬件平台、软件平台、应用软件、应用界面。

2.数据库系统的发展

数据管理发展到今经历了:人工管理、

文件系统和数据库系统3 个阶段。其中数据独立

性最高的是数据库系统,这里的数据独立性指

的是数据库和应用程序的相互独立。

(1)文件系统阶段

文件系统是数据库系统发展的初级阶段,

它提供了简单的数据共享和数据管理能力,但

是它无法提供完整统一的管理和数据共享的能力。

(2)层次与网状数据库系统阶段

第一部分公共基础知识

从20 世纪60 年代末起,真正的数据库系统——层次数据库与网状数据库开始发展,它们为统一管理与共享数据提供了大力支撑。但是这两个系统也存在不足,主要是其脱胎与文件系统,受文件的物理影响较大,对数据库使用带来的诸多不便,同时,此类系统的数据模式构造繁琐不宜于推广。

(3)关系数据库系统阶段

关系数据库系统结构简单、使用方便、逻辑性强、物理性少。在数据库的储多新技术中,下面3 种是比较重要的:面向对象数据库系统、知识库系统和关系数据库系统的扩充。3.数据库系统的基本特点

数据库技术是在文件系统基础上发展产生的,两者都以数据文件的形式组织数据,但由于数据库系统在文件系统之上加入DBMS 对数据进行管理,从而使得数据库系统具有以下特点。

(1)数据的高集成性

数据库系统的数据高集成性主要表现在如下几个方面:

①在数据库系统中采用统一的数据结构方式,如在数据库中采用二维表作为统一结构方式。②在数据库系统中按照多个应用的需要组织全局统一的数据结构(即数据模式),数据模式不仅可以建立全局的数据结构,还可以建立数据间的语义联系,从而构成一个内在紧密联系的数据整体。③数据库系统中的数据模式是多个应用共同的、全局的数据结构,而每个应用的数据则是全局结构中的一部分,称为局部结构(即视图),这种全局与局部的结构模式构成了数据库系统数据集成性的主要特征。

(2)数据的高共享性与低冗余性

由于数据的集成性使得数据可为多个应用所共享。数据共享的使用大大减少数据冗余,节约存储空间。减少冗余性以避免数据的不同出现是保证系统一致性的基础。

(3)数据高独立性

数据独立性是指数据与程序间的互不依赖性,是数据库中常用的术语。其包括数据的物理独立性和数据的逻辑独立性。

(4)数据统一管理与控制

数据库系统不仅为数据提供高度集成环境,同时它还为数据提供操作功能,这主要包含以下3个方面:数据的完整性检查、数据的安全性保护、并发控制。

4.数据库系统的内部结构系统

数据库系统在其内部具有三级模式和二级映射,三级模式分别是外模式、概念模式与内模式。二级映射则分别是,外模式—概念模式映射和概念模式—内模式映射。这种三级模式与二级映射构成了数据库系统内部的抽象结构体系。

(1)数据库系统的三级模式

数据模式是数据库系统中数据结构的一种表示形式,它具有不同的层次与结构方式:

①外模式也称子模式或用户模式。它能够看见和使用局部数据的逻辑结构和特征的描述,它是用户的数据视图,一个数据库可以有多个外模式。②概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。一个数据库只有一个概念模式。

③内模式又称物理模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是

数据在数据库内部的表示方式。

(2)数据库系统的两级映射

数据库系统的三级模式是对数据的3 个级别的抽象,它把数据具体物理实现留给物理模式,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式和存储方式。

考点2 数据库系统的基本概念

1.数据模型的基本概念

数据模型(Data Model)研究的就是数据的组织形式及方式。数据库是某个企业、组织或部门所涉及的数据的综合,它不仅要反映数据本身的内容,而且要反映数据之间的联系。

数据模型通常由数据结构、数据操作和完整性约束3 部分组成。

(1)数据结构

数据结构是所研究的对象类型的集合。数据结构是对系统静态特征的描述。

(2)数据操作

数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。数据操作是对系统动态特征的描述。

(3)数据的约束条件

数据的约束条件是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其

选择题考点秘籍—二级C 语言

联系所具有的约束和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。

2.数据模型的分类

数据模型按不同的应用层次分成3 种类型,它们是概念数据模型、逻辑数据模型、物理数据模型。

(1)概念数据模型

概念数据模型简称概念模型,它是一种面向客观世界、面向用户的模型;它与具体的数据库管理系统无关,与具体的计算机平台无关。概念模型是整个数据模型的基础。

(2)逻辑数据模型

逻辑数据模型又称数据模型,它是一种

面向数据库系统的模型,该模型着重于在数据库系统一级的实现。目前,数据库领域中最常用的逻辑数据模型有四种,分别为:层次模型、网状

模型、关系模型和面向对象模型。

(3)物理数据模型

物理数据模型又称物理模型,它是一种面向计算机物理表示的模型,此模型给出了数据模型在计算机上物理结构的表示。

3.E-R模型

概念模型是面向现实世界,它的出发点是有效和自然地模拟现实世界,给出数据的概念化结构。它的表示方法很多,其中最著名是E

-R模型(或实体-联系模型),它于1976年由PeterChen首先提出。

(1)E-R 模型的基本概念

①实体是客观存在并可相互区别的事物。实体可以是具体的人、事、物,也可以是抽象的概念或联系。②属性是实体所具有的某一特性。一个实体可由若干个属性来刻画。③码是能够唯一标识实体的属性集。④属性的取值范围称为该属性的域。⑤用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。⑥同型实体的集合称为实体集。例如,全体学生就是一个实体集。

⑦在现实世界中,事物内部以及事物之间是普遍联系的。在E-R 模型中,这些联系反映为实体内部的联系和实体之间的联系。

(2)E-R 模型的图形表示方法

E-R 模型可以用一种非常直观的图的形式表示,这种图称为E-R 图。E-R 图提供了表示实体集、属性和联系的方法。

①实体型:用矩形表示,矩形框内写明实

体名。②属性:用椭圆形表示,并用无向边将

其与相应的实体连接起来。③联系:用菱形表示,菱形框内写明联系名,并用无向边将其与

有关实体连接起来,在无向边旁标上联系的类

型(1︰1,1︰n或m︰n)。

4.层次模型

层次模型是数据库系统中最早出现的数据

模型,层次数据库系统采用层次模型作为数据

的组织方式。

5.网状模型

在现实世界中事物之间的联系更多的是非

层次关系的,用层次模型表示非树形结构是很

不直接的,网状模型则可以克服这一弊病。网

状数据库系统采用网状模型作为数据

的组织方式。

网状模型是一种比层次模型更具普遍性的

结构,它去掉了层次模型的两个限制,允许多

个结点没有双亲结点,允许结点有多个双亲结点,此外它还允许两个结点之间有多种联系。6.关系模型

关系模型由关系数据结构、关系操纵和关

系完整性约束3 部分组成。

(1)关系的数据结构

关系模型的数据结构非常单一。在关系模型中,现实世界的实体以及实体间的各种联系都用关系来表示。关系模型采用二维表来表示,简称表。二维表

由表结构及表的元组组成。表结构由n 个命名的属

性组成。每个属性有一个取值范围称为值域。表框架对应了关系的模式,即类型的概念。

(2)关系操纵

关系模型中常用的关系操纵包括:选择、

投影、连接、除、并、交、差等查询操作和增加、删除、修改操作两大部分。其中,查询操

作是最主要的部分。

①数据查询。用户可查询数据库中的数据,

它包括一个关系内的查询以及多个关系间的查询。②数据删除。数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。它也分为定位与操作两部分,其中定位

部分只需要横向定位而无需纵向定位,定位后即执行删除操作。③数据插入。数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。在数据插入中不需定位,仅需做

第一部分公共基础知识

关系中元组插入操作,因此数据插入只有一个基本操作。④数据修改。数据修改是在一个表中修改指定的元组与属性。数据修改不是一个基本操作,它可以分解为删除需修改的元组与插入修改后的元组两个更基本的操作。

(3)关系中的数据约束

关系模型允许定义3 类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中,实体完整性和参照完整性是关系模型必须满足的完整性约束条件,用户定义的完整性是应用领域需要遵循的约束条件。

考点3 关系代数

1.关系代数的基本概念

关系代数是一种抽象的查询语言,是关系数据操作语言的一种传统表达方式,它是用对关系的运算来表达查询的。任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符和运算结果是运算的三大要素。

关系代数的运算对象是关系,运算结果也是关系。关系代数用到的运算符包括4 类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。

2.关系模型的基本运算

由于操作是对关系的运算,而关系是有序组的集合,因此,可以将操作看成是集合的运算。

①插入:设有关系R 需插入若干元组,要插入的元组组成关系R′,则插入可用集合并运算表示为:R∪R′。②删除:设有关系R 需删除一些元组,要删除的元组组成关系R′,则删除可用集合差运算表示:R- R′。③修改:修改关系R 中的元组内容可用实现方法:设需修改的元组构成关系R′,则先做删除得:R- R′;设修改后的元组构成关系R″,此时将其插入即得到结果:(R-R′)∪R″。④查询:用于查询的

3 个操作无法用传统的集合运算表示,需要引入一些新的运算。

3.关系代数中的扩充运算

关系代数中除了上述几个最基本的运算外,为操纵方便还需增添一些运算,这些运算均可由基本运算导出。常用的扩充运算有交、除、连接及自然连接等。

①交运算:关系R 与S 交运算后得到的是由那些既属于R 又属于S 的元组所组成,记为R∩S。②除运算:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z 为属性组。R 中的Y 和S 中

的Y 可以有不同的属性名,但必须出自相同的

域集。③连接运算:连接运算也称为θ连接运算,这是一种二元运算,它的操作是从两个关系的笛

卡尔积中选取属性间满足一定条件的元组,以合

并成一个大关系。

考点4 数据库设计与管理

1.数据库设计概述

在数据库应用系统中的一个核心问题就是

设计一个能满足用户要求,性能良好的数据库,

这就是数据库设计。

数据库设计是建立数据库及其应用系统的

技术,是信息系统开发和建设中的核心技术。

数据库设计即是在一定平台制约下,根据信息

需求与处理需求设计出性能良好的数据模式。2.数据库设计的需求分析

简单地说,需求分析就是分析用户的要求。它是设计数据库的起点。

需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统的工作概况,明

确用户的各种需求,然后在此基础上确定新系统的功能。调查的重点是“数据”和“处理”,通过调查、收集与分析,获得用户对数据库的如下要求:信息要求、处理要求、安全性与完整性要求。3.数据库的概念设计

概念结构设计是将需求分析阶段得到的用

户需求抽象为信息结构,即概念模型的过程。

它是整个数据库设计的关键。

(1)概念结构设计的方法

设计概念结构通常有4 类方法:自顶向下、

自底向上、逐步扩张、混合策略。这四类方法中

最常用的是自底向上方法。即自顶向下地进行需

求分析,然后再自底向上地设计概念结构。它

通常分为两步:第一步是抽象数据并设计局部视图;第二步是集成局部视图,得到全局的概念结构。

(2)数据抽象

概念结构是对现实世界的一种抽象。所谓

抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特征,忽略非本质的细节,并把这些特性用各种概念精确地加以描

选择题考点秘籍—二级C 语言

述,这些概念组成了某种模型。一般有3 种抽象:分类、聚集和概括。

(3)局部视图设计

局部视图设计的具体做法:选择局部应用

或逐一设计分E-R 图。

(4)视图的集成

各子系统的分E-R 图设计好以后,下一步就

是要将所有的分E-R 图综合成一个总E-R 图。一般地,视图集成可以有两种方式:一种是多个分

E-R 图一次集成;另一种是逐步集成,用累加的方式每次集成两个分E-R 图。前者比较复杂,做起

来难度较大,后者每次只集成两个分E-R图,可

以降低复杂度。

4.数据库的逻辑设计

逻辑结构设计的任务就是把概念结构设计阶

段设计好的基本E-R 图转换为与选用的DBMS 产

品所支持的数据模型相符合的逻辑结构。

5.数据库的物理设计

数据库物理设计的主要目标是对数据库内部

物理结构作调整并选择合理的存取路径,以提高

数据库访问速度及有效的利用存储空间。在现代

关系数据库中已经大量屏蔽了内部物理结构,因

此留给用户参与物理设计的余地并不多,一般的RDBMS 中留给用户参与物理设计的内容有:索

引设计、集簇设计和分区设计。

6.数据库管理

数据库是数据的集合,是一种共享资源,因此它需要维护与管理,这种工作称为数据库管理。数据库的建立、使用和维护等工作只靠一个DBMS 远远不够,还要有专门的人员来完成,这些人则称为数据库管理员简称DBA。数据库管理一般包含如下一些内容:数据库的建立、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。

(1)数据库的建立

数据库的建立是数据库管理的核心,其包

括两部分内容:数据模式的建立及数据加载。

①数据模式的建立。数据模式由DBA 负责

建立,DBA 利用DBMS 中的DDL 语言定义数据

库名,定义表及相应属性,定义主关键字、索引、集簇、完整性约束、用户访问权限,申请空间资源,定义分区等,此外还需定义视图。

②数据载入。在数据模式定义后即可加载数

据,DBA可以编制加载程序将外界数据加载至数据模式内,从而完成数据库的建立。

(2)数据库的重组

数据库运行了一段时间以后,由于记录不

断的增加、删除、修改等,可能导致数据库的

物理存储情况变坏,从而降低了数据的存储效率,数据库的性能降低。这时DBA 就要对数据

库进行重组织,或部分重组织(只对频繁增、

删进行重组织)。DBMS 一般都提供数据重组织

用的实用程序。

(3)数据库安全性控制

数据库的安全性是指保护数据库以防止不

合法的使用所造成的数据泄漏、更改或破坏。

系统安全保护措施是否有效是数据库系统的主

要指标之一。数据库的安全性和计算机系统的

安全性,包括操作系统、网络系统的安全性是

紧密联系、互相支持的。

(4)数据库完整性控制

数据库的完整性是指数据的正确性和相

容性。数据库是否具备完整性关系到数据库系

统能否真实地反映现实世界,因此维护数据库

的完整性是非常重要的。为维护数据库的完整性,DBMS 必须提供一种机制来检查数据库中

的数据,看其是否满足语义规定的条件。这些

加在数据库数据之上的语义约束条件称为数

据库完整性约束条件,它们作为模式的一部分

存入数据库中。而DBMS 中检查数据是否满足

完整性条件的机制称为完整性检查。

(5)数据库的故障恢复

尽管数据库系统中采用了各种保护措施

来防止数据库的安全性和完整性被破坏,保证

并发事务的正确执行,但是计算机系统中硬件

的故障、软件的错误、操作员的失误以及恶意

的破坏仍是不可避免的,这些故障轻则造成运

行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分

数据丢失,因此DBMS 必须具有把数据库从错

误状态恢复到某一已知的正确状态的功能,这

就是数据库的恢复。

(6)数据库监控

自数据库投入使用之日起,DBA 需随时观察数据库的动态变化,监视数据库的性能变化,在

必要时对数据库作出调整,并在数据库发生错误、故障或产生不适应情况时随时采取措施。

第二部分二级C 语言程序设计

第二部分二级C语言第1

章程序设计基本概念

考点1 程序设计

1.C 程序

高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而“编译程序”是指可以把源程序转换成目标程序的软件。由

C 语言构成的指令序列称为C 源程序,源程序文件的后缀名为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把目标文件与C 语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。

2.算法的5 个特性

算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应当具有5 个特性:有穷性、确定性、可行性、有0 个或多个输入、有一个或多个输出。

3.结构化程序和“模块化”设计

(1)结构化程序:结构化程序分为顺序结构、选择结构和循环结构3种形式。

(2)“模块化”结构结构化程序设计提倡模块化的设计方法:每个程序设计人员分别完成一个

或多个小模块,称为“模块化”方法;由一个个

功能模块构成的程序结构为模块化结构。

考点2 C 程序的结构和格式

1.main 函数

任何一个有效的程序都有且只能有一个main()函数,它的地位相当于程序的主体,就像大树的树干;而其它函数都是为main()服务的,就像大树树干分出的枝干。main 函数具有3.个.特.点.:① C 语言规定必须用main 作为主函数名。其后的一对圆括号中间可以是空的,但不能省略;

② 程序中的main()是主函数的起始行,也是C 程序执行的起始行。每一个程序都必须有且只有一个主函数;③ 一个C 程序总是从主函数开始执行,到程序执行完后,从主函数结束执行,不论main 函数在程序中的位置如何。

2.程序中的注释

在一个C 程序中放在符号“/*”和“*/” 之间的内容,称为对程序的注释。注释是对程序的说明。编写注释时应遵循4.条.规.则.:①符号“/*”和“*/”必须成对出现,“/”和“*”两者之间不可以有空格;②注释可以用英文、中文,可以出现在程序中任意合适的地方;③在注释之间不可以再嵌套“/*”和“*/”。例如,/*/*…*/*/形式是非法的;④注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。

3.源程序的书写格式

C 程序书写格式的基.本.习.惯.有:① 一行内可以写几个语句,一个语句可以分写在多行上;

② 每个语句和数据定义的最后必须由一个分号“;”结束(分号是C 语句的一部分,不是语句之间的分隔符)。

4.C 语言的风格

C 语言的风格主要有:C 语言简洁、紧凑,使用方便、灵活;运算符丰富。C 语言的运算符包含的范围很广泛,共有34 种运算;数据结构丰富,具有现代化语言的各种数据结构;用函数作为程序模块以实现C 程序的模块化;

C 语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;生成目标代码质量高,程序执行效率高;用C 语言写的程序可移植性好。5.标识符

(1)标识符

所谓标识符就是C 语言中的变量名、函数名、数组名、文件名、类型名等。C 语言合法标识符的命名规则是:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;③区分大小写:大写字母与小写字母被认为是两个不同的字符;④C 语言规定了一个标识符允许的字符个数,即标识符的前若干个字符有效,超过的字符将不被识别。

(2)标识符分类

C 语言的标识符可分为关键字、预定义标识符和用户标识符3 类:关键字、预定义标识符、用户标识符。

考点3 常量和变量

1.常量

所谓常量是指在程序运行过程中,其值不能被改变的量。

在C 语言中,常量分为5.种.:整型常量;实型常量;字符常量;字符串常量;符号常量。

整型常量和实型常量又称数值型常量,它

选择题考点秘籍—二级C 语言

们有正值和负值的区分。两者的区别是:整型常量只用数字表示,不带小数点。实型常量必须用带小数点的数表示。

(1)整型常量:整型常量有两.种.分.类.方.法.:短整型常量、长整型常量、基本整型常量、无符号型

常量;十进制常量、八进制常量和十六进制常量。

(2)实型常量:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为小数和指数两种形式。

(3)字符常量:C的字符常量是用单引号(撇号)括起来的一个字符。如'a'、'D'、'%'等都是字符常量。注意:'a'和'A'是不同的字符常量。

C 允许用一种特.殊.形.式.的.字符常量,就是以一个“\”开头的字符序列。

(4)字符串常量:字符串常量是用一对双引号括起来的字符序列。

(5)符号常量:在C语言程序中,用一个

符号名来代表一个常量,称为符号常量。2.变量

所谓“变量”是指在程序运行过程中,可以改变的值。通俗而言,数学公式x+5=y 中,x、y 都可以看作一个变量。程序中用到的所有变量都必须遵循以下6 条规则:用一个名字作为标识;变量的名字由用户定义;它必须符合标识符的命名规则;程序中所有变量都必须先定义后使用;对变量的定义通常放在函数体内的前部,但也可以放在函数的外部或复合语句的开头;在定义变量的同时要说明其类型,系统在编译时就能根据其类型为其分配相应的存储单元。一个变量实质上是代表内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作。变量有整型变量和实型变量两种之分。

(1)整型变量:整型变量分为4.种.类.型.:基本型:以int 表示;短整型:以short int 表示,

或以short 表示;长整型:以long int 表示,或以long 表示;无符号型:以unsigned int 表示,存储单元中全部二进制位用作存放数本身,而不包括符号。

(2)实型变量:C语言中实型变量分为两.种.类.型.:①单精度型变量:定义的形式为“float

a,b,c;”;②双精度型变量:定义的形式为“double x,y,z;”。在一般计算机系统中,为float类型的变量分配4 个字节的存储单元,为double 类型的变量分配8 个字节的存储单元,并按实型数的存储方式存放数据。

3.整型数据的分类

前面提到的常量中有一种称为整型常量,

变量中也有一种称为整型变量,我们统称为整

型数据。前面我们也提到整型变量和整型常量

都可以分为基本型、短整型、长整型和无符号型。不同的编译系统或计算机系统对这几类整

型数据所占用的字节数有不同的规定。

考点4 算术表达式

1.基本的算术运算符

C语言中,基本的运算符包括5种:加(+)、减(-)、乘(*)、除(/)和求余(%)。这些运算符

需要两个运算单位,称为双目运算符。加(+)、减(-)两个运算符很特殊,也可用作单目运算符,运算符

必须在运算数的左边,如-55、+35。

加(+)、减(-)、乘(*)、除(/)可以

使用整型和实型数据,而求余运算符(%),

其运算对象只能是整型,在%运算符左侧的

运算数为被除数,右侧的运算数为除数,运

算结果是两数相除后所得的余数,如3%2=1(用3除以2,余数为1)。

2.运算符的优先级、结合性和算术表达式(1)算术运算符的优先级

算术运算符和圆括号的优先级高低次序:

()、+ 、-、*、/ 、%、+ 、-

同级同级同级

高低

(2)算术运算符和圆括号结合性

在算术运算符中,只有单目运算符“+”和“-”的结合性是从右到左的,其余运算符的结合

性都是从左到右。

(3)算术表达式

用算术运算符和一对圆括号将运算数(或称操作数)连接起来的、符合C 语言规则的表达式

称为算术表达式。算术表达式的运算规则和要求:①在算术表达式中,使用多层圆括号,但左

右括号必须配对。运算时从内层圆括号开始,由内向外依次计算;②在算术表达式中,若包含不

同优先级的运算符,则按运算符的优先级由高到

低进行;若表达式中运算符的级别相同,则按运

算符的结合方向进行。

单目双目

第二部分二级C 语言程序设计

3.强制类型转换表达式

利用强制类型转换运算符可以将一个表

达式的值转换成所需类型。

【格式】(类型名)(表达式)

“类型名”称为强制类型转换运算符。

考点5 赋值表达式

1.赋值运算符

(1)赋值运算符

赋值运算符的符号为“=”,由赋值运算符组成的表达式称为赋值表达式。先求出右边表达式的值,然后把此值赋给赋值号左边的变量。

【格式】变量名=表达式

(2)赋值表达式

【格式】<变量><赋值运算符>(表达式)

使用赋值表达式时应注意6.条.事.项.:①赋值运算符的优先级别只高于逗号运算符,比任何其它运算符的优先级都低,且具有自右向左的结合性;②赋值运算符不是数学中的“等于号”,而是进行“赋予”的操作;③赋值表达式x=y的作用是,将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉;④赋值运算符的左侧只能是变量,不能是常量或表达式;⑤赋值运算符右边的表达式也可以是一个赋值表达式;⑥在C语言中,“=”号被视为一个运算符,x=78是一个表达式。

(3)赋值语句

【格式】<变量><赋值运算符>(表达式);

【说明】在赋值表达式的尾部加上一个“;” 号,就构成了赋值语句,也称表达式语句。2.复合赋值表达式

在赋值运算符之前加上其它运算符可以构成复合赋值运算符。在C 语言中共有10 种复合赋值运算符,其中与算术运算有关的复合运算符有:+=、-=、*=、/=、-=。复合赋值运算符的优先级与赋值运算符的优先级相同。3.赋值运算中的类型转换

如果赋值运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧表达式求得的数值按赋值运算符左边变量的类型进行转换,也可以用强制类型转换的方式人为地进行转换后将值赋给赋值运算符左边的变量。这种转换仅限于数值数据之间,通常称为“赋值兼容”。在C 语言的表达式中,如果运算符两边的整型类型不相同,将进行类型之间的转换。转.换.规.则.:①当赋值运算符左边的变量为短整型变量,右边的值为长整型变量,短整型变量只能接受长整型变量低位上两个字节中的数据,高位上两个字节中的数据将丢失;②当赋值运算符左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数值的范围不应超出左边变量可以接受的数值范围,此时负数将转换为正数;③当赋值运算符左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上。这时若符号位为1,将按负数处理。

考点6 自加、自减和逗号运算

1.自加运算符(++)

使用自加运算符时应注意5.个.事.项.:①自加运算符“++”的运算是使运算对象增1。②运算

符“++”是单目运算符,运算对象可以是整型变量,也可以是实整型变量,但不能是常量或表达式。所以像++3、(i+j)++是不合法的;③用自加运算符构成表达式时,既可以是前缀形式,也可以是后缀形式。④运算符“++”的结合方向是“自右向左”。⑤不.要.在.一个表达式中对同一个变量进

行多次,诸如i++或++i 等运算。

2.自减运算符(--)

使用自减运算符时应注意5.个.事.项.:①自减运算符“--”的运算是使运算对象减1。②运算符

“--”是单目运算符,运算对象可以是整型变量,也可以是实整型变量,但不能是常量或表达式。

③用自减运算符构成表达式时,既可以是前缀形式,也可以是后缀形式。④运算符“--”的结合方向是自右向左。⑤不.要.在.一个表达式中对同一个变量进行多次诸如i--或--i 等运算。

3.逗号运算符和逗号表达式

(1)逗号运算符

“,”是C 语言提供的一种特殊运算符,称为逗号运算符。逗号运算符的结合性为从左到右。在所有运算符中,逗号运算符的优先级最低。

(2)逗号表达式

用逗号运算符将表达式连接起来的式子

称为逗号表达式。

【格式】表达式1,表达式2,…,表达式n

【说明】由于逗号运算符的结合性为从左到右,所以逗号表达式将从左到右进行运算。即先计算表达式1,然后计算表达式2,依次进行,最后计算表达式n,最后一个表达式的值就是此逗号表达式的值。

选择题考点秘籍—二级C 语言

第2 章顺序结构

考点1 字符型常量与变量

1.字符常量

一个字符常量代表ASCII 字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。例如,'A'、'a'都是合法的字符常量。2.转义字符常量

转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII 字符,这些字符常量也必须括在一对单引号内。C 语言中的转义字符见表2-1。

字符串常量是由双引号括起来的一串字符。在C 语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为“字符串结束标志”。'\0'是一个转义字符,称为空值,它的ASCII 码值为0。'\0'作为标志占用存储空间,但不计入字符串的实际长度。

4.字符常量的运算

①在C 程序中,字符常量可参与任何整数运算;②通过算术运算把数字字符转换为整数值或把一位整数转换为数字字符;③字符可以进行关系运算。

5.字符变量

C 语言中,字符变量用关键字char 进行定义,定义时可同时赋初值。当把字符放入字符变量中时,字符变量中的值就是该字符的ASCII 码值,所以字符变量可以作为整型变量来处理,可以参

与对整型变量所允许的任何运算。

考点2 putchar 与getchar 函数

(1)p utchar函数输出字符

【格式】putchar(ch)

【说明】ch 可以是字符变量或是字符常

量,在以上函数调用的后面跟一个分号“;”,

就形成一行独立的输出语句。

(2)g etchar()函数输入字符

【格式】ch= getchar()

【说明】getchar()后的一对圆括号内没有

参数,但这一对圆括号不可少,getchar()函数

从终端读入一个字符作为函数值。以上调用形

式把读入的一个字符赋给变量ch。

考点3 printf 函数

1.printf 函数的一般调用形式

printf(格式控制,输出项1,输出项2,…)

【说明】“格式控制”是字符串形式,“输

出项”是要输出的字符或变量名。在printf 函数

的调用之后加上“;”,则构成输出语句。2.printf 函数中常用的格式说明

格式控制中,每个格式说明都必须用“%”

开头,以一个格式字符作为结束,在此之间可以

根据需要插入“宽度说明”、左对齐符号“-”、前导

零符号“0”等。

①格式字符:主要用于说明输出字符的格式;

②长度修饰符:在“%”和格式字符之间,可以加入长度修饰符,以保证数据输出格式的正确和对齐;③输出数据所占的宽度说明:当使

用%d、%c、%f、%e、%s的格式说明时,输出数

据所占的宽度由系统决定,通常按照数据本身的实际宽度输出,前后不加空格,并采用右对齐的形式;

④输出数据左对齐:输出数据都默认为右对齐,若

想左对齐,可以在格式控制中的“%” 和宽度之间

加一个“-”号来实现;⑤使输出数据总带“+”和“-”:通常输出的数据如果是负数,前面有“-”,

但正数前面的“+”一般都省略了。如让每一个数

前面都带正负号,可以在“%”和格式字符之间加

一个“+”来实现。

3.使用printf 函数时的注意事项

①printf 的输出格式为自由格式,是否在

两个数之间留逗号、空格或回车,完全取决于

第二部分二级C 语言程序设计

格式控制;②格式控制中必须含有与输出项一一对应的输出格式说明,类型必须匹配;③在格式控制中,除了前面要求的输出格式,还可以包括任意的合法字符(包括汉字和转义符);

④如果要输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”;⑤printf函数有返回值,返回值是本次调用输出字符的个数,包括回车等控制符。

考点4 scanf 函数

1.scanf 函数的一般调用形式

scanf 函数一般用于输入数据信息。

scanf(格式控制,输入项1, 输入项2,…)

【说明】在scanf函数调用之后加“;”,则构成输入语句。

2.scanf 函数中常用的格式说明

格式控制的主要作用是指定输入时的数据转换格式,即格式转换说明。

每个格式说明都必须用“%”开头,以“格式字符”作为结束。允许用于输入的字符及相应功能见表2-2。

3.通过scanf 函数从键盘输入数据

①输入数值数据:输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,间隔

符个数不限。②指定输入数据所占的宽度:在格式字符前加入一个正整数指定输入数据所占的宽度。

③跳过某个输入数据:可在“%”和格式字符之

间加入“*”号,作用是跳过对应的输入数据。

④在格式控制字符串中插入其他字符:

scanf函数

中的格式控制字符串是为了输入数据用的,因

此若想在屏幕上输出提示信息,应该首先使用printf函数输出。

考点5 位运算的含义和应用

1.位运算符的含义

C 语言提供了6 种位运算符,含义见表2-3。

位运算符与赋值运算符结合可以组成扩展

的值运算符,其表示形式及含义见表2-4。

(1)“按位取反”运算

运算符(~)是位运算符中惟一的一个单

目运算符,运算对象应置于运算符的右边,其运

算功能是把运算对象的内容按位取反(使每一

位上的0变1,1变0)。

(2)“左移”运算

左移(<<)运算符是双目运算符。运算符

左边是移动对象,右边是整型表达式,代表左

移的位数。左移时,右端(低位)补0;左端

(高位)移出的部分舍弃。

大学c语言必背基础知识_c语言基础知识大全

大学c语言必背基础知识_c语言基础知识大全 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格123 printf(“f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为1.250000 printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位) printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入) 第三节数据输入1、scanf(“a=%d,b=%d”,">2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!scanf(“%d,%d”,注意写成这样才可以! 3、特别注意指针在scanf的考察例如:int x=2;int *p=scanf(“%d”,x); 错误scanf(“%d”,p);正确scanf(“%d”,错误scanf(“%d”,*p)错误 4、指定输入的长度(考试重点)终端输入:1234567scanf(“-M%d”,x为12,y为3456,z为7终端输入:1 234567 由于1和2中间有空格,所以只有1位给xscanf(“-M%d”,x 为1,y为2345,z为67 5、字符和整型是近亲:int x=97;printf(“%d”,x); 结果为97printf(“%c”,x); 结果为a 6、输入时候字符和整数的区别(考试超级重点) scanf(“%d”,这个时候输入1,特别注意表示的是整数1 scanf(“%c”,这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。 补充说明: 1)scanf函数的格式考察: 注意该函数的第二个部分是scanf(“%d%d%*d%d”,跳过输入的第三个数据。 2)putchar ,getchar 函数的考查:

2017全国计算机等级考试二级C语言知识点超全整(打印版).docx

全国计算机等级考试

目录 第-部分公共基础知识 第1章算法与数据结构 (1) 考点1算法........................... I 考点2数据结构.. (1) 考点3线性表及英顺序存储结构 (1) 考点4栈和队列 (1) 考点5线性链表 (2) 考点6树与二叉树 (2) 考点7查找技术 (3) 考点8排序技术 (3) 第2章程序设计基础 (4) 考点I程序设计方法与风格 (4) 考点2结构化程序设计 (5) 考点3面向对象的程序设计 (5) 第3章软件工程基础 (5) 考点1软件工程基本概念 (5) 考点2软件分析方法 (6) 考点3结构化设计方法 (7) 考点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 与gclchar 函数 (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) 考点I库函数 (21) 考点2函数的调用 (22) 考点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) 考点|用-?维字符数组存放字符出? (26) 考点2使指针指向字符串 (26) 考点3字符串的输入和输出 (26) 考点4字符串数组 (27) 考点5用于字符串处理的函数 (27) 第9章编译预处理和动态存储分配 (27) 考点I編译预处理 (27) 考点2宏替换 (27) 考点3文件包含处理 (28) 考点4动态存储分配 (28) 第10章结构体.共用体和用戸定义类型28考点1结构体 (28) 考点2共用体 (29) 考点3用户定义类型 (29) 第11章文件 (29) 考点1文件指针 (29) 考点2文件的读写 (30)

大学c语言考试基础知识复习

C 语言最重要的知识点复习资料总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从()入口, 然后从最上面顺序往下读(碰到循环做循环, 碰到选择做选择),有且只有一个函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)是位是指为0 或者1 。是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以数值存放在文本文件中。 2、 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、可用于循环结构和语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C 语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个函数,是程序运行的起点。第二节、熟悉 1、是软件,用来运行写的C语言程序。 2、每个C 语言程序写完后,都是先编译,后链接,最后运行。()这个过程中注意和文件时无法运行的,只有文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。有其它元 素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。都不是关键字。迷惑你的地方是 可以做为用户标识符。因为中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。二进制、八进制、十六进制转换 成十进制。 第五节:整数与实数 1)C 语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次) a 、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有 8 的,逢8 进1。 b 、C语言中的十六进制规定要以Ox开头。 2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

贵州大学2012-2013C语言考试A卷 附 重要考点复习资料

贵州大学2012-20103学年第一学期考试试卷 A C语言程序设计 满分100分,考试时间为120分钟。 一、单项选择题(选出一个正确答案,每小题2分,共20分) 1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ) A.连接、编译 B. 连接、运行 C. 编译、运行 D. 编译、连接 2.下列说法正确的是() A.一个c语言程序并非总是从主函数位置开始执行的 B.一个c语言程序有且只有一个主函数 C.函数可以嵌套定义,不可以嵌套调用 D.程序函数的位置不可以任意 3.下面是合法C语言标识符的是() A. 2A_K; B. _M+N; C. –M3; D. AC_2; 4.下列格式符中,可以用于控制字符输出的是( ) A. %d B. %f C. %o D. %c 5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( ) A. 4; B. 16; C. 30; D. 50; 6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( ) A. 10,5 B. 15,6 C. 15,5 D. 10,6 7.若有定义 int x,*p;,则以下正确的赋值表达式是( ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x; 8.以下对结构体类型变量的定义中,不正确的是( ) A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; } stud; AA stud; C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句: func(rec1,rec2+rec3,(rec4+rec5)); 函数调用语句中,含有的实参个数是( ) A. 3 B. 4 C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x #define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( ) A.25 B.11 C.43 D.以上均不是

大学c语言学习心得感悟

大学c语言学习心得感悟 通过这次大学c语言计算机实习学习,我们了解了一些关于c 语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。下面是WTTWTT为大家收集整理的大学c语言学习心得感悟,欢迎大家阅读。 大学c语言学习心得感悟篇1 林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。 许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。 通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电

脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢? 在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和: void main { 首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。 int num1,num2,x=0; 由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。 scanf("%d%d ",&;num1,&;num2) ; 得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果

国家二级C语言公共基础知识要点及历年真题

1算法 1.1 算法的基本概念 1.算法的概念(必记): 算法是指解题方案的准确而完整的描述。 分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导方 案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想)。 结论:算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 2.算法的基本特征(必记): a.可行性:由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算法时,要考虑到设计的算法是否是可性的。 b.确定性:算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 c.有穷性:算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 d.拥有足够的情报:算法有相应的初始数据。 3.算法的基本要素: 一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。 基本运算和操作分为四类: a. 算术运算: (加、减、乘、除等运算) b. 逻辑运算: (与、或、非等运算) c. 关系运算: (大于、小于、等于、不等于等运算) d. 数据传输: (赋值、输入、输出等操作) 算法的控制结构: 算法中各操作之间的执行顺序称之为算法的控制结构。一个算法一般都可以用顺序、选择、循环三种基本控 制结构组合而成。 注意:一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。 4.算法设计基本方法: 列举法、归纳法、递推、递归、减半递推技术、回溯法。 1.2 算法的复杂度 (必记) 算法的复杂度主要包括时间复杂度和空间复杂度。 1.算法的时间复杂度: 是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。 可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平 均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。 2.算法的空间复杂度: 一个算法的空间复杂度,是指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空间 +输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。 历届的考题: 1、算法具有五个特性,以下选项中不属于算法特性的是(______) [2005.4] A)有穷性B)简洁性C)可行性D)确定性 2、问题处理方案的正确而完整的描述称为______。[2005.4] 3、下列叙述中正确的是________。[2006.9] A)一个算法的空间复杂度大,则其时间复杂度也必定大

C语言循环知识点总结

循环 特点:在满足特定条件的情况下,反复执行某程序段。 While循环 While循环的格式是这样的:while(条件表达式){语句代码},意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,一直到条件表达式的返回值为假时,跳出循环。 While循环很容易出现死循环这种状况,就是因为忘记写了“增量”这个东西。 上面的代码就是少了count++,这个增量,所以,条件表达式一直满足,就一直执行,就造成了死循环。 此时,应该这样改进:

一些例子:

Do-while循环 与while不同的只有一个地方,就是先执行一遍代码,再进行判断。也就是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。 随机数arc4random() 产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?因为,在存储的时候,生成的数的最高位的数字为1,此时,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况避免掉,在输出之前,用unsigned 来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。 另一个值得注意的是,随机数产生的时候,数字会很大,而我们在代码过程中,

不需要这么大的数,此时,想要把这个数减小,可以用取余的办法来限制。 在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式: 若是规定在负空间生成随机数,那么就将公式改成: 一些例子:

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

上海理工大学 c语言复习卷以及答案

参考解答 一、单选题 1. 以下C程序中预处理命令写法正确的是: D 。[知识点:编译预处理命令] A. #include “studio.h” B. #include [stdio.h] C. #include {stdio.h} D. #include “stdio.h” 2.执行下列语句序列后,不可能出现的运行结果是___ C ____。[知识点:开关语句] int n; scanf( "%d", &n); switch ( n ) { case 1: case 2: putchar('X'); case 3: case 4: putchar('Y'); break; default: putchar('Z'); A. 显示:z B. 显示:xy C. 显示:x D. 显示:y 3.设a,b为整型变量, 且二者均不为0, 以下关系表达式中恒成立的是___ C ___。[知识点:运算与数据类型] A. a/b*b/a==1 B. a/b*b==a C. a*b/a==b D. a*b/ a*b ==1 4.设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___B____。[知识点:if语句] if ( x>y ) z=x; x=y; y=z; printf("%d,%d,%d",x, y, z ); A. 20,30,20 B. 20,30,30 C. 20,30,10 D. 10,20,30 5.下列程序的输出结果是__ B ____。[知识点:整型常量的表示和自增运算] main() { int a = 011; printf( "%d\n", ++a ); } A. 9

2019年全国计算机二级C语言知识点复习:指针

2019年全国计算机二级C语言知识点复习:指针 【考点1】指针变量 指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。 【考点2】指针变量的定义 格式为:类型名 *指针变量名。二维指针int **p;能够理解为基类型为(int *)类型。 【考点3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。 指针变量两种初始化 方法一:int a=2,*p=&a;(定义的同时初始化) 方法二:int a=2,*p; (定义之后初始化) p=&a; 【考点4】指针变量的引用 &是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。 【考点5】指针的运算 int *p 中 *p 和p 的差别: *p 能够当做变量来用;*的作用是取后面地址p 里面的数值

p 是当作地址来使用。 *p++ 和(*p)++的之间的差别:改错题目中很重要 *p++是地址会变化。 (*p)++ 是数值会要变化。 三名主义:(考试的重点) 数组名:表示第一个元素的地址。数组名不能够自加,他是地址常量名。(考了很多次) 函数名:表示该函数的入口地址。 字符串常量名:表示第一个字符的地址。 考试重要的话语: 指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p 的地方都能够用它等价的代替指向的变量。 例如:int a=2,*p=&a; *p=*p+2; (因为*p 指向变量a,所以指向哪个就等价哪个,这里*p 等价于a,能够相当于是a=a+2)

苏科大 C语言知识整理

五、思考与实践 一.在()里填写正确答案。 1. 一个C语言编写的程序总是从(main函数)开始执行。 2. 在C语言程序中,用关键字(int )定义基本整型变量,用关键字(float)定义单精度实型变量,用关键字(double)定义双精度实型变量。 3. 通常一个字节包含(8)个二进制位。在一个字节中存放的最大(十进制)整数是(127),最小(十进制)整数是(-128)。 4. 在C语言中,注释部分两侧的分界符号分别为(/*)和(*/)。 5. 用字符串的形式表示China(“China”) 6. 字符串“ab\034\\\x79”的长度为(5)。 7. 若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为(1) 8. 若a,b,c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a,b,c的值分别为(6)(4)(2)。 9. 若有定义int x=3, y=2; float a=2.5, b=3.5;则表达式 (x+y)%2+(int)a/(int)b的值为(1)。 10. 若x和n均是int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)后的值为(0)。 11. 假设所有变量的类型均为整型,则表达式 (a=2,b=5,a++,b++,a+b)的值为(9)。 12. 以下所有变量的类型均为整型,则sum=pad=5; pad=sum++, pad++, ++pad; 后,pad的值为(7)。 13. 已知int a,b=1; 执行语句a=-b++;后a的值为(-1)。 14. 已知int m=5, y=2; 则执行y+=y-=m*=y后y 的值为(16)。 15. 表达式8.0*(1/2)的值为(0.0)。 二.下列程序完成交换两个变量的功能,请填空。 #include void main() {int x,y; x=10;y=15; printf("before swap:x=%d,y=%d\n",x,y); x+=y ;y=x-y ; x=x-y ; printf("after swap:x=%d,y=%d\n",x,y); } 注意:在填写程序中不可修改其它行的程序,包括增加变量定义等。 四、思考与实践 1 在C语言中,关系运算符有() 2 在C语言中,当表达式值为()时表示“假”,当表达式值为()时表示“真”。 3 逻辑运算符优先级从高到低:() 4 计算下面表达式的值。设a=1,b=2,c=3。(设每小题开始时a,b,c均为此值) (1)a = a!=b?b:c (2)a>b?b+1:c+1 (3)(a=4) ? a--:b-- 5 写出满足下面条件的关系或逻辑表达式。 (1)a在区间(3,10)内。 (2)x是3的倍数。 (3)x和y的和大于100且x大于45。 (4)a等于c或b不等于0 (5)a是小写字母 6 计算下面逻辑表达式的值。设a=0,b=1,c=2,d=4。(设每小题开始时a,b,c,d均为此值) (1)a>=b (2)c-b==a (3)c!=d-b (4)b>a && c>b (5)a && d-c (6)!a && b>c (7)(b>a) || cd (10)(a||b) && cd 五、思考与实践 填空题:(每空2分) 1. C语言中的语句可分为5类,即(控制语句)、(函数调

C语言基础必须掌握的 知识点

C语言基础必须掌握的知识点 C程序的结构和格式。 1.main函数 任何一个有效的程序都有且只能有一个main()函数,它的地位相当于程序的主体,就像大树的树干,而其他函数都是为main()服务的,就像大树树干分出的枝干。 main函数具有以下3个特点: ① C语言规定必须用main作为主函数名。其后的一对圆括号中间可以是空的,但不能省略。 ②程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。 ③一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。 2.程序中的注释 在一个C程序中放在符号“/*”和“*/”之间的内容,称为对程序的注释。注释是对程序的说明。编写注释时应遵循以下4条规则: ①符号“/*”和“*/”必须成对出现,“/”和“*”两者之间不可以有空格。 ②注释可以用英文、中文,可以出现在程序中任意合适的地方。 ③在注释之间不可以再嵌套“/*”和“*/”。例如,/*/*…*/*/形式是非法的。 ④注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。换句话说,注释只是为了更好地看懂程序而做的标记,不对程序产生任何影响。 3.源程序的书写格式 C程序书写格式的基本习惯有: ①一行内可以写几个语句,一个语句可以分写在多行上。 ②每个语句和数据定义的最后必须由一个分号“;”结束(分号是C语句的一部分,不是语句之间的分隔符)。 4.C语言的风格 C语言的风格主要有以下几个方面: ●C语言简洁、紧凑,使用方便、灵活; ●运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算; ●数据结构丰富,具有现代化语言的各种数据结构; ●用函数作为程序模块以实现C程序的模块化; ●C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作; ●生成目标代码质量高,程序执行效率高; ●用C语言写的程序可移植性好(与汇编语言比)。 5.标识符 所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。 C语言合法标识符的命名规则是: ①标识符由字母、数字和下划线组成; ②第一个字符必须为字母或下划线;

计算机二级C语言基础知识整理

1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 算法是一组严谨地定义运算顺序的规则,每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。所以其四个基本特征包括: (1)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性; (2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;(3)可行性,算法原则上能够精确地执行; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的三种基本控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。算法效率的度量—算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度:指执行算法所需要的计算工作量。即算法执行过程中所需要的基本运算次数。通常,一个算法所用的时间包括编译时间和运行时间。 算法空间复杂度:指执行这个算法所需要的内存空间。包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。 1.2 数据结构的基本概念 数据结构:指相互有关联的数据元素的集合。 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。 数据的逻辑结构应包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系(指逻辑关系,与存储位置无关)。 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据物理结构。 数据的存储结构有顺序、链接、索引等。 线性结构的条件,(一个非空数据结构): (1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构 线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

计算机二级C语言考点解析:初步知识

计算机二级C语言考点解析:初步知识 2.1程序的构成 尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示: 编译预处理 主函数() 函数() 函数() 从上面中可以看出,一个C源程序实际上就是若干函数的集合,这些函数中有一个是程序的主函数,任何C的源程序执行时,都是从主函数开始执行的,其它的函数最终必将被这个主函数所调用。C语言除了主函数规定必须取名main外,其它的函数名可以任取,但是要符合C的标识符取名规则,另外注意不要与保留字重名,最好也不可与C语言中的库函数或其它一些命令如编译预处另命令重名。各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的、独立的。不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。一个完整的一般意义上的函数有一个固定的框架,编写具体的函数时,只需在这个框架中填入相应的内容即可。框架如下: 函数类型函数名(形参) 形参说明 { 内部变量说明; 执行语句部分; } 2.2C语言的基本词法 C语言的基本词法由三部分组成:符号集、关键字、保留字。 符号集就是一门语言中允许出现的字符的集合,C语言的符号集就是ASCⅡ码表中的一些字符,在键盘上不能直接得到(比如说响铃字符),C语言引入了转义字符的概念,利用反斜杠符号″\″后加上字母的一个字符组合来表示这些字符,当在源程序中遇到这类字符组合

时,虽然这个字符组合是一个字符串的形式,但C语言仍会自动将之理解成某一特定的字符。比如″\″,C语言在处理这个字符组合时,会自动理解成回车换行符号。转义字符经过进一步引申应用,形成了另外两种形式:″\ddd″和″\xnn″,这里″\″后的ddd和xnn分别代表三位八进制和两位十六进制数(打头的″x″只是标明后面跟着的是十六进制数),这两种形式不再局限于表示不可打印的字符,它们可以表示ASCⅡ码表中的任意字符,只要把所需表示的字符的ASCII码转换成八进制数或十六进制数即可。比如说字母″A″,ASCII码为65,65的八进制和十六进制分别为101和x41,所以,字母A可表示为″\101″或″\x41″,对转义字符应认真理解。 标识符就是用以标识的符号。正如现实生活中给每一个人都取一个名字一样,C语言中的每一个对象(如函数、变量等)都必须取一个标识符以和其它对象区别开。在C语言中,这个标识符是一个字符串,这个字符串的选定有一定的规则:必须是以字母或下划线开头的字母与数字的序列。除了这个基本的规则外,C语言对标识符的命名还有几个限制需加以注意:①长度最好不要超过八个字符。因C中对标识符只处理前8个字符,超过8个长度的部分将被C自动忽略掉。″ABCDEFGH1″和″ABCDEFH2″是同一个标识符;②标识符不要与保留字同名,最好也不要与C提供的标准标识符,如库函数重名;③应注意C语言对大小写字母是敏感的,Abcd和abcd是两个不同的标识符。 关键字实际上就是一些特殊的标识符,又称保留字,这些保留字不允许用户对它重新定义。 2.3头文件、数据说明、函数的开始和结束标志 1.头文件:也称为包含文件或标题文件,一般放在一个C语言程序的开头,用#include″文件名″的格式,其中文件名是头文件名,一般用.h作为扩展名。 2.数据说明:C语言中的数据分常量和变量两种。 3.常量:有数值常量和符号常量两种。 4.数值常量:可以分为整型常量、实型常量、浮点型常量和字符常量。 5.符号常量:用一个标识符代表的一个常量,又称标识符形式的常量。 6.变量:其值可以改变的量,变量名习惯上用小写字母表示。 7.标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 8.标识符的命名规则:C语言中标识符只能由字母、数字下划线三种字符组成,且第一个字符必须为字母或下划线。C语言是大小写敏感语言,即对大小写字母认为是不同的字符。C语言中标识符的长度随系统不同而字,如TURBOC中取前8个字符,8个字符后面的字符会自动取消。

全国计算机等级考试二级c语言公共基础知识总结

全国计算机等级考试二级c语言公共基础知识总结 第一章数据结构与算法 1.1算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解 释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后 终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法' 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 1.2数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的 存储结构; (3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。

数据的存储结构有顺序、链接、索引等。 线性结构条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3线性表及其顺序存储结构 线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素 之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记 录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只 有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k, ,ADR(a1)为第一个元素的地 址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 1.4栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈 顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出” (FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算; (3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线 性表。Rear指针指向队尾,front指针指向队头。 队列是“先进行出” (FIFO)或“后进后出”(LILO)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删

计算机等级考试必备C语言最重要的知识点

计算机等级考试必备C语言最重要的知识点

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是她的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不能够再定义函数。 5、算法:能够没有输入,可是一定要有输出。

6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行能够写多个语句,能够写多行。 3、一个C语言程序有且只有一个main 函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---.obj---.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才能够运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

大学C语言期末考试试题及答案

大学C语言期末考试试题 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); }

相关文档 最新文档