⑴ 计算机二级c语言知识点
2017计算机二级c语言知识点精选
计算机二级C语言考试内容是什么?为帮助大家更好备考3月计算机考试,我为大家分享计算机C语言二级考试知识点如下:
第一章 数据结构与算法
1.1 算法
1.算法的基本概念
(1) 概念:算法是指一系列解决问题的清晰指令。
(2) 4个基本特征:可行性、确定性、有穷性、拥有足够的情报。
(3) 两种基本要素:对数据对象的运算和操作、算法的控制结构(运算和操作时问的顺序)。
(4) 设计的基本方法:列举法、归纳法、递推法、递归法、减半递推技术和回溯法。
2.算法的复杂度
(1) 算法的时间复杂度:执行算法所需要的计算工作量。
(2) 算法的空间复杂度:执行算法所需的内存空间。
1.2 数据结构的基本概念
数据结构指相互有关联的数据元素的集合,即数据的组织形式。其中逻辑结构反映数据元素之间逻辑关系;存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存储、链式存储、索引存储和散列存储4种方式。
数据结构按各元素之间前后件关系的复杂度可划分为:
(1) 线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构。
(2) 非线性结构:不满足线性结构的数据结构。
1.3 线性表及其顺序存储结构
1.线性表的基本概念
线性结构又称线性表,线性表是最简单也是最常用的一种数据结构。
2.线性表的顺序存储结构
元素所占的存储空间必须连续。
元素在存储空间的位置是按逻辑顺序存放的。
3.线性表的插入运算
在第i个元素之前插入一个新元素的步骤如下:
步骤一:把原来第n个节点至第i个节点依次往后移一个元素位置。
步骤二:把新节点放在第i个位置上。
步骤三:修正线性表的节点个数。
在最坏情况下,即插入元素在第一个位置,线性表中所有元素均需要移动。
4.线性表的删除运算
删除第i个位置的元素的步骤如下:
步骤一:把第i个元素之后不包括第i个元素的n-i个元素依次前移一个位置;
步骤二:修正线性表的结点个数。
1.4 栈和队列
1.栈及其基本运算
(1) 基本概念:栈是一种特殊的线性表,其插入运算与删除运算都只在线性表的一端进行,也被称为“先进后出”表或“后进先出”表。
栈顶:允许插入与删除的一端。
栈底:栈顶的另一端。
空栈:栈中没有元素的栈。
(2) 特点。
栈顶元素是最后插入和最早被删除的元素。
栈底元素是最早插入和最后被删除的元素。
栈有记忆作用。
在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素。
栈顶指针top动态反映了栈中元素的变化情况
(3) 顺序存储和运算:入栈运算、退栈运算和读栈顶运算。
2.队列及其基本运算
(1) 基本概念:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称“先进先出”的线性表。
队尾:允许插入的一端,用尾指针指向队尾元素。
排头:允许删除的一端,用头指针指向头元素的前一位置。
(2) 循环队列及其运算。
所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
入队运算是指在循环队列的队尾加入一个新元素。
当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算,这种情况称为“上溢”。
退队运算是指在循环队列的队头位置退出一个元素并赋给指定的变量。首先将队头指针进一,然后将排头指针指向的元素赋给指定的变量。当循环队列为空(s=0)时,不能进行退队运算,这种情况称为“下溢”。
1.5 线性链表
在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
1.6 树和二叉树
1.树的基本概念
树是简单的非线性结构,树中有且仅有一个没有前驱的节点称为“根”,其余节点分成m个互不相交的有限集合T1,T2,…,T}mm,每个集合又是一棵树,称T1,T2,…,T}mm为根结点的子树。
父节点:每一个节点只有一个前件,无前件的节点只有一个,称为树的根结点(简称树的根)。
子节点:每~个节点可以后多个后件,无后件的节点称为叶子节点。
树的度:所有节点最大的度。
树的深度:树的最大层次。
2.二叉树的定义及其基本性质
(1) 二叉树的定义:二叉树是一种非线性结构,是有限的节点集合,该集合为空(空二叉树)或由一个根节点及两棵互不相交的左右二叉子树组成。可分为满二叉树和完全二叉树,其中满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。二叉树具有如下两个特点:
二叉树可为空,空的二叉树无节点,非空二叉树有且只有一个根结点;
每个节点最多可有两棵子树,称为左子树和右子树。
(2) 二叉树的基本性质。
性质1:在二叉树的第k层上至多有2k-1个结点(k≥1)。
性质2:深度为m的二叉树至多有2m-1个结点。
性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。
性质4:具有n个结点的完全二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n的整数部分。
3.满二叉树与完全二叉树
(1) 满二叉树:满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。满二叉树在其第i层上有2i-1个结点。
从上面满二叉树定义可知,二叉树的每一层上的结点数必须都达到最大,否则就不是满二叉树。深度为m的满二叉树有2m-1个结点。
(2) 完全二叉树:完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
如果—棵具有n个结点的深度为k的二叉树,它的每—个结点都与深度为k的满二叉树中编号为1~n的结点——对应。
3.二叉树的存储结构
二叉树通常采用链式存储结构,存储节点由数据域和指针域(左指针域和右指针域)组成。二叉树的链式存储结构也称二叉链表,对满二叉树和完全二叉树可按层次进行顺序存储。
4.二叉树的遍历
二叉树的遍历是指不重复地访问二叉树中所有节点,主要指非空二叉树,对于空二叉树则结束返回。二叉树的遍历包括前序遍历、中序遍历和后序遍历。
(1) 前序遍历。
前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作;否则①访问根结点;②前序遍历左子树;③前序遍历右子树。
(2) 中序遍历。
中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。中序遍历描述为:若二叉树为空,则执行空操作;否则①中序遍历左子树;②访问根结点;③中序遍历右子树。
(3) 后序遍历。
后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。后序遍历描述为:若二叉树为空,则执行空操作;否则①后序遍历左子树;②后序遍历右子树;③访问根结点。
1.7 查找技术
(1) 顺序查找:在线性表中查找指定的元素。
(2) 最坏情况下,最后一个元素才是要找的元素,则需要与线性表中所有元素比较,比较次数为n。
(3) 二分查找:二分查找也称折半查找,它是一种高效率的查找方法。但二分查找有条件限制,它要求表必须用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)排列。对长度为n的有序线性表,在最坏情况下,二分查找法只需比较log2n次。
1.8 排序技术
(1) 交换类排序法。
冒泡排序:通过对待排序序列从后向前或从前向后,依次比较相邻元素的排序码,若发现逆序则交换,使较大的元素逐渐从前部移向后部或较小的元素逐渐从后部移向前部,直到所有元素有序为止。在最坏情况下,对长度为n的线性表排序,冒泡排序需要比较的次数为n(n-1)/2。
快速排序:是迄今为止所有内排序算法中速度最快的一种。它的基本思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元索的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。最坏情况下,即每次划分,只得到一个序列,时间效率为O(n2)。
(2) 插人类排序法。
简单插入排序法:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。在最坏情况下,即初始排序序列是逆序的情况下,比较次数为n(n-1)/2,移动次数为n(n-1)/2。
希尔排序法:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序。待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。
(3) 选择类排序法。
简单选择排序法:扫描整个线性表。从中选出最小的元素。将它交换到表的最前面;然后对剩下的子表采用同样的方法,直到子表空为止。最坏情况下需要比较n(n-1)/2次。
堆排序的方法:首先将一个无序序列建成堆;然后将堆顶元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。不考虑已经换到最后的那个元素,只考虑前n-1个元素构成的子序列,将该子序列调整为堆。反复做步骤②,直到剩下的子序列空为止。在最坏情况下,堆排序法需要比较的次数为0(nlog2n)
第二章 程序设计基础
2.1 程序设计方法与风格
(1)设计方法:指设计、编制、调试程序的方法和过程,主要有结构化程序设计方法、软件工程方法和面向对象方法。
(2)设计风格:良好的'设计风格要注重源程序文档化、数据说明方法、语句的结构和输入输出。
2.2 结构化程序设计
1.结构化程序设计的原则
结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。。
(1)自顶向下:即先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。
(2)逐步求精:对复杂问题,应设计一些子目标做过渡,逐步细化。
(3)模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块;
(4)限制使用GOT0语句。
2.结构化程序的基本结构与特点
(1)顺序结构:自始至终严格按照程序中语句的先后顺序逐条执行,是最基本、最普遍的结构形式。
(2)选择结构:又称为分支结构,包括简单选择和多分支选择结构。
(3)重复结构:又称为循环结构,根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段。
结构化程序设计中,应注意事项:
(1)使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑。
(2)选用的控制结构只准许有一个人口和一个出口。
(3)程序语言组成容易识别的块,每块只有一个入口和一个出口。
(4)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现。
(5)语言中所没有的控制结构,应该采用前后一致的方法来模拟。
(6)尽量避免GOT0语句的使用。
2.3 面向对象的程序设计
面向对象方法的本质是主张从客观世界固有的事物出发来构造系统,强调建立的系统能映射问题域。
对象:用来表示客观世界中任何实体,可以是任何有明确边界和意义的东西。
类:具有共同属性、共同方法的对象的集合。
实例:一个具体对象就是其对应分类的一个实例。
消息:实例间传递的信息,它统一了数据流和控制流。
继承:使用已有的类定义作为基础建立新类的定义技术。
多态性:指对象根据所接受的信息而作出动作,同样的信息被不同的对象接收时有不同行动的现象。面向对象程序设计的优点:与人类习惯的思维方法一致、稳定性好、可重用性好、易于开发大型软件产品、可维护性好。
第三章 软件工程基础
3.1 软件工程基本概念
1.软件的定义与特点
(1)定义:软件是指与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档和数据。
(2)特点。
是逻辑实体,有抽象性。
生产没有明显的制作过程。
运行使用期间不存在磨损、老化问题。
开发、运行对计算机系统有依赖性,受计算机系统的限制,导致了软件移植问题。
复杂性较高,成本昂贵。
开发涉及诸多社会因素。
2.软件的分类
软件可分应用软件、系统软件和支撑软件3类。
(1)应用软件是特定应用领域内专用的软件。
(2)系统软件居于计算机系统中最靠近硬件的一层,是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。
(3)支撑软件介于系统软件和应用软件之间,是支援其它软件的开发与维护的软件。
3.软件危机与软件工程
软件危机指在计算机软件的开发和维护中遇到的一系列严重问题。软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序,包括软件开发技术和软件工程管理。
4.软件生命周期
软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。
在国家标准中,软件生命周期划分为8个阶段①软件定义期:包括问题定义、可行性研究和需求分析3个阶段。②软件开发期:包括概要设计、详细设计、实现和测试4个阶段。③运行维护期:即运行维护阶段。
5.软件工程的原则
软件工程的原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
3.2 结构化分析方法
需求分析的任务是发现需求、求精、建模和定义需求的过程,可概括为:需求获取、需求分析、编写需求规格说明书和需求评审。
1.常用的分析方法
结构化分析方法:其实质着眼于数据流,自顶向下,逐层分解,建立系统的处理流程。
面向对象分析方法。
2.结构化分析常用工具
结构化分析常用工具包括数据流图、数字字典(核心方法)、判断树和判断表。
(1)数据流图:即DFD图,以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能。是一种功能模型。
符号名称作用:
箭头代表数据流,沿箭头方向传送数据的通道
圆或椭圆代表加工,输入数据经加工变换产生输出
双杠代表存储文件,表示处理过程中存放各种数据文件
方框代表源和潭,表示系统和环境的接口
(2)数据字典:结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表。以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
(3)判定树:使用判定树进行描述时,应先从问题定义的文字描述中分清判定的条件和判定的结论,根据描述材料中的连接词找出判定条件之问的从属关系、并列关系、选择关系,根据它们构造判定树。
(4)判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合引发的,使用判定表比较适宜。
3.软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。
(1)软件需求规格说明书的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
(2)软件需求规格说明书的内容:①概述;②数据描述;③功能描述;④性能描述;⑤参考文献;⑥附录。
(3)软件需求规格说明书的特点:①正确性;②无歧义性;③完整性;④可验证性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追踪性。
3.3 结构化设计方法
1.软件设计的基本概念和方法
软件没计是一个把软件需求转换为软件表示的过程。
(1)基本原理:抽象、模块化、信息隐藏、模块独立性(度量标准:耦合性和内聚性,高耦合、低内聚)。
(2)基本思想:将软件设计成由相对独立、单一功能的模块组成的结构。
2.概要设计
(1)4个任务:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。
(2)面向数据流的设计方法:数据流图的信息分为交换流和事物流,结构形式有交换型和事务型。
3.详细设计的工具
详细设计的工具包括:
图形工具:程序流程图、N-S、PAD、HIPO。
表格工具:判定表。
语言工具:PDL(伪码)。
3.4 软件测试
1.目的
为了发现错误而执行程序的过程。
2.准则
所有测试应追溯到用户需求。
严格执行测试计划,排除测试的随意性。
充分注意测试中的群集现象。
程序员应避免检查自己的程序。
穷举测试不可能。
妥善保存设计计划、测试用例、出错统计和最终分析报告。
3.软件测试技术和方法
软件测试的方法按是否需要执行被测软件的角度,可分为静态测试和动态测试,按功能分为白盒测试和黑盒测试。
(1)白盒测试:根据程序的内部逻辑设计测试用例,主要方法有逻辑覆盖测试、基本路径测试等。
(2)黑盒测试:根据规格说明书的功能来设计测试用例,主要诊断方法有等价划分法、边界值分析法、错误推测法、因果图法等,主要用于软件确认测试。
4.软件测试的实施
软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化。
软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。
单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验测试。
单元测试的目的是发现各模块内部可能存在的各种错误。
单元测试的依据是详细的设计说明书和源程序。
单元测试的技术可以采用静态分析和动态测试。
3.5 程序的调试
(1)任务:诊断和改正程序中的错误。
(2)调试方法:强行排错法、回溯法和原因排除法。
第四章 数据库设计基础
4.1 数据库系统的基本概念
(1) 数据(Data):描述事物的符号记录。
(2) 数据库(DataBase):长期存储在计算机内的、有组织的、可共享的数据集合。
(3) 数据库管理系统的概念
数据库管理系统(DataBase Management System,DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、数据控制及保护和数据服务等。为完成以上6个功能,DBMS提供了相应的数据语言;数据定义语言(负责数据的模式定义与数据的物理存取构建);数据操纵语言(负责数据的操纵);数据控制语言(负责数据完整性、安全性的定义)。数据库管理系统是数据库系统的核心,它位于用户和操作系统之间,从软件分类的角度来说,属于系统软件。
(4) 数据库技术发展经历了3个阶段。
人工管理阶段→文件系统阶段→数据库系统阶段
(5) 数据库系统的特点:集成性、高共享性、低冗余性、数据独立性、数据统一管理与控制等。
(6) 数据库系统的内部机构体系:三级模式(概念模式、内模式、外模式)和二级映射(外模式/概念模式的映射、概念模式/内模式的映射)构成了数据库系统内部的抽象结构体系。
4.2 数据模型
数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,描述的内容有数据结构、数据操作和数据约束。有3个层次:概念数据模型、逻辑数据模型和物理数据模型。
(1) E—R模型:提供了表示实体、属性和联系的方法。实体间联系有“一对一”、“一对多”和“多对多”。
(2) E-R模型用E-R图来表示。
(3) 层次模型:利用树形结构表示实体及其之问联系。其中节点是实体,树枝是联系,从上到下是一对多关系。
(4) 网状模型:用网状结构表示实体及其之间联系。是层次模型的扩展。网络模型以记录型为节点,反映现实中较为复杂的事物联系。
(5) 关系模型:采用二维表(由表框架和表的元组组成)来表示,可进行数据查询、增加、删除及修改操作。关系模型允许定义“实体完整性”、“参照完整性”和“用户定义的完整性”三种约束。
键(码):二维表中唯一能标识元组的最小属性集。
候选键(候选码):二维表中可能有的多个键。
主键:被选取的一个使用的键。
4.3 关系代数
(1) 关系代数的基本运算:投影、选择、笛卡尔积。
(2) 关系代数的扩充运算:交、连接与自然连接、除。
4.4 数据库设计与管理
1.数据库设计概述
基本思想:过程迭代和逐步求精。
方法:面向数据的方法和面向过程的方法。
设计过程:需求分析→概念设计→逻辑设计→物理设计→编码→测试→运行→进→步修改。
2.数据库设计的需求分析
需求收集和分析是数据库设计的第一阶段,常用结构化分析方法(自顶向下、逐层分解)和面向对象的方法,主要工作有绘制数据流程图、数据分析、功能分析、确定功能处理模块和数据间关系。
数据字典:包括数据项、数据结构、数据流、数据存储和处理过程,是对系统中数据的详尽描述。
3.数据库的设计
(1) 数据库的概念设计:分析数据问内在的语义关联,以建立数据的抽象模型。
(2) 数据库的逻辑设计:从E-R图向关系模型转换,逻辑模式规范化,关系视图设计可以根据用户需求随时创建。实体转换为元组,属性转换为关系的属性,联系转换为关系。
(3) 数据库的物理设计:是数据在物理设备上的存储结构与存取方法,目的是对数据库内部物理结构作出调整并选择合理的存取路径,以提高速度和存储空间。
4.数据库管理
数据库管理包括数据库的建立、数据库的调整、数据库的重组、数据库的安全性与完整性控制、数据库故障恢复和数据库的监控。
;⑵ 计算机二级考试C语言知识点归纳
2017年计算机二级考试C语言知识点归纳
计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。下面是2017年计算机二级考试C语言知识点归纳。欢迎阅读。
总体上必须清楚的
1)程序结构是三种:顺序结构 ,循环结构
(三个循环结构),选择结构(if 和 switch)
2)读程序都要从main()入口,然后从最上面顺序
往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式。
数据存放的位置就是他的地址。
4)bit是位 是指为0 或者1。 byte 是指字节,
一个字节 = 八个位。
5)一定要记住二进制如何划成十进制。
概念常考到的:
1)、编译预处理不是C语言的一部分,不再运行
时间。C语言编译的程序称为源程序,
它以ASCII数值存放在文本文件中。
2)、每个C语言程序中main函数是有且只有一个。
3)、在函数中不可以再定义函数。
4)、算法是一定要有输出的,他可以没有输入。
5)、break可用于循环结构和switch语句。
6)、逗号运算符的级别最低。
第一章
1)合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。迷惑你的
地方If是可以做为用户标识符。因为If中的
第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:
2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。.
3)字符数据的合法形式::
'1'是字符占一个字节,"1"是字符串占两个
字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,
'A'的ASCII数值是65。
4) 整型一般是两个字节, 字符型是一个字节,
双精度一般是4个字节:
考试时候一般会说,在16位编译系统,或者
是32位系统。碰到这种情况,不要去管,一样做题。
掌握整型一般是两个字节, 字符型是一个字节,
双精度一般是4个字节就可以了。
5)转义字符的考查:
在程序中 int a = 0x6d,是把一个十六进制的数给
变量a 注意这里的0x必须存在。
在程序中 int a = 06d, 是一个八进制的形式。
在转义字符中,’x6d’才是合法的,0不能写,
并且x是小写。
‘141’是合法的。
‘108’是非法的,因为不可以出现8。
转义字符意义 ASCII码值(十进制)
a 响铃(BEL) 007
退格(BS) 008
f 换页(FF) 012
换行(LF) 010
回车(CR) 013
水平制表(HT) 009
v 垂直制表(VT) 011
\ 反斜杠 092
? 问号字符 063
' 单引号字符 039
" 双引号字符 034
空字符(NULL) 000
ddd 任意字符三位八进制
xhh 任意字符二位十六进制
6)算术运算符号的优先级别:
同级别的有的是从左到右,有的是从右到左。
7)强制类型转换:
一定是(int)a 不是 int(a),注意类型上
一定有括号的。
注意(int)(a+b)和(int)a+b 的区别。
前是把a+b转型,后是把a转型再加b。
8)表达式的考查:
是表达式就一定有数值。
赋值表达式:表达式数值是最左边的数值,
a=b=5;该表达式为5,常量不可以赋值。
自加、自减表达式:假设a=5,++a(是为6),
a++(为5);
运行的机理:++a 是先把变量的数值加上1,
然后把得到的数值放到变量a中,然后再用这
个++a表达式的数值为6,而a++是先用该表达
式的数值为5,然后再把a的数值加上1为6,
再放到变量a中。 进行了++a和a++后在下面的
程序中再用到a的话都是变量a中的6了。
考试口诀:++在前先加后用,++在后先用后加。
逗号表达式:优先级别最低 ;表达式的数值
逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
9)位运算的考查:
会有一到二题考试题目。
总的处理方法:几乎所有的'位运算的题目
都要按这个流程来处理(先把十进制变成
二进制再变成十进制)。
例1:char a = 6, b;
b = a<<2; 这种题目的计算是先要把a的十进
制6化成二进制,再做位运算。
例2:一定要记住,
例3:在没有舍去数据的时候,<<左移一位表示
乘以2;>>右移一位表示除以2。
10)018的数值是非法的,八进制是没有8的,
逢8进1。
11)%符号两边要求是整数。不是整数就错了。
12)两种取整丢小数的情况:
1、int a =1.6;
2、(int)a;
第二章
1)printf函数的格式考查:
%d对应整型;%c对应字符;%f对应单精度等等。
宽度的,左对齐等修饰。
%ld对应 long int;%lf 对应double。
2)scanf函数的格式考察:
注意该函数的第二个部分是&a 这样的地址,不是a;
Scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的
第三个数据。
3)putchar ,getchar 函数的考查:
char a = getchar() 是没有参数的,从键盘得到
你输入的一个字符给变量a。
putchar(‘y’)把字符y输出到屏幕中。
4)如何实现两个变量x ,y中数值的互换
(要求背下来)
不可以把 x=y,y=x; 要用中间变量 t=x;x=y;y=t。
5)如何实现保留三位小数,第四位四舍五入
的程序,(要求背下来)
x=(int)(x*1000+0.5)/1000.0
这个有推广的意义,注意 x = (int)x 这样是
把小数部分去掉。
第三章
特别要注意:c语言中是用非0表示逻辑真的,
用0表示逻辑假的。
1)关系表达式:
表达式的数值只能为1(表示为真),
或0(表示假)
当关系的表达是为真的时候得到1。
如 9>8这个是真的,所以表达式的数值就是1;
2)逻辑表达式:
只能为1(表示为真),或0(表示假)
a) 共有&& || ! 三种逻辑运算符号。
b) !>&&>|| 优先的级别。
c) 注意短路现象。考试比较喜欢考到。
d) 要表示 x 是比0大,比10小的方法。0
不可以的(一定记住)。是先计算0
结果为1或则0;再用0,或1与10比较得到的
总是真(为1)。所以一定要用(0
示比0大比10小。
3)if 语句
else 是与最接近的if且没有else的相组合的。
4)条件表达式:
表达式1 ?表达式2 :表达式3
注意是当非0时候是表达式2的数值,当为0是
就是表达式2的数值。
考试口诀:真前假后。
5)switch语句:
a)一定要注意有break 和没有break的差别,
没有break时候,只要有一个case匹配了,剩下
的都要执行,有break则是直接跳出了swich语句。
b)switch只可以和break一起用,不可以
和continue用。
第四章
1)三种循环结构:
a)for(); while(); do- while()三种。
b)for循环当中必须是两个分号,千万不要忘记。
c)写程序的时候一定要注意,循环一定要有结束
的条件,否则成了死循环。
d) do-while()循环的最后一个while();的分号一定
不能够丢。(当心上机改错)
2) break 和 continue的差别
记忆方法:
break:是打破的意思,(破了整个循环)所以
看见break就退出真个一层循环。
continue:是继续的意思,(继续循环运算),
但是要结束本次循环,就是循环体内剩下的语句
不再执行,跳到循环开始,然后判断循环条件,
进行新一轮的循环。
3)嵌套循环
就是有循环里面还有循环,这种比较复杂,要一层
一层一步一步耐心的计算,一般记住两层是处理
二维数组的。
4) while((c=getchar())!=’ ’)和
while(c=getchar() !=’ ’)的差别
先看a = 3 != 2 和(a=3)!=2 的区别:
(!=号的级别高于=号 所以第一个先计算 3!=2)
第一个a的数值是得到的1;第二个a的数值是3。
考试注意点: 括号在这里的重要性。
第五章
函数:是具有一定功能的一个程序块;
1) 函数的参数,返回数值(示意图):
main()
{
int a = 5,b=6,c;
c = add(a,b);
printf(“%d”,c);
}
调用函数
a,b是实参
整个函数得到一个数值就是
Add函数的返回数值。
int add ( int x,int y)
{
int z;
z=x+y;
return z;
}
被调用函数
x,y是形式参数
函数返回数值是整型
z就是这个add函数计算后得到的结果,就是函数
返回给主程序的返回数值。
程序是在从上往下顺序执行,当碰到了函数add后,
把a,b的数值穿给调用函数,程序暂时中断等待返回数值。
当得到了返回数值后,再顺序的往下执行
2)一定要注意参数之间的传递
实参和形参之间 传数值,和传地址的差别。(考试的重点)
传数值的话,形参的变化不会改变实参的变化。
传地址的话,形参的变化就会有可能改变实参的变化。
3)函数声明的考查:
一定要有:函数名,函数的返回类型,函数的参数类型。
不一定要有:形参的名称。
第六章
指针变量的本质是用来放地址,而一般的变量是放数值的。
int *p 中 *p和p的差别:
*p可以当做变量来用;*的作用是取后面地址p里面的数值
p是当作地址来使用。
*p++ 和 (*p)++的之间的差别:改错题目中很重要
*p++是 地址会变化。
(*p)++ 是数值会要变化。
三名主义:(考试的重点)
数组名:表示第一个元素的地址。数组名不可以自加,
他是地址常量名。(考了很多次)
函数名:表示该函数的入口地址。
字符串常量名:表示第一个字符的地址。
第七章
1一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者
是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是
说a+1是跳一列。
对a[3][3]的讨论。
1、a表示数组名,是第一个元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者
是a=a+2赋值的都是错误的。
3、a是二维数组名,所以它是行指针,也就
是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以对
它进行赋值操作,同时它们都是列指针,a[0]+1,
a[1]+1,a[2]+1都是跳一列。
5、注意a和a[0] 、a[1]、a[2]是不同的,它们的
基类型是不同的。前者是一行元素,后三者是一列元素。
二维数组做题目的技巧:
如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。
步骤一:把他们写成:
第一列第二列第三列
a[0]à 1 2 3 ->第一行
a[1]à 4 5 6—>第二行
a[2]à 7 8 9->第三行
步骤二:这样作题目间很简单:
*(a[0]+1)我们就知道是第一行的第一个元素往后
面跳一列,那么这里就是a[0][1]元素,所以是1。
*(a[1]+2)我们就知道是第二行的第一个元素往后面
跳二列。那么这里就是a[1][2]元素,所以是6。
一定记住:只要是二维数组的题目,一定是写成如
上的格式,再去做题目,这样会比较简单。
数组的初始化,一维和二维的,一维可以不写,
二维第二个一定要写
int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。
但int a[4][]={2,3,4}非法。
二维数组中的行指针
int a[1][2];
其中a现在就是一个行指针,a+1跳一行数组元素。
搭配(*)p[2]指针
a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组
元素。搭配*p[2]指针数组使用
还有记住脱衣服法则:
a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再
可以变成 *(*(a+2)+3)
;⑶ 2017计算机二级考试《C语言》知识点
计算机等级考试为您推荐计算机等级考试基础知识点,高频考点,重点以及难点,希望对您学习计算机等级有所帮助,从而取得好成绩,这将是我们最大的心愿。
一)合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成。有其它元素就错了。
并且第一个必须为字母或则是下划线。第一个为数字就错了。
关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。
二)实型数据的合法形式:
2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。.
三)字符数据的合法形式::
'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
四) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:
考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。
五)转义字符的考查:
在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。
在程序中 int a = 06d, 是一个八进制的形式。
在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。
‘\141’是合法的。
‘\108’是非法的,因为不可以出现8。
转义字符意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
换行(LF) 010
回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符三位八进制
\xhh 任意字符二位十六进制
六)算术运算符号的优先级别:
同级别的有的是从左到右,有的是从右到左。
七)强制类型转换:
一定是(int)a 不是 int(a),注意类型上一定有括号的。
注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。
八)表达式的考查:
是表达式就一定有数值。
赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
自加、自减表达式:假设a=5,++a(是为6), a++(为5);
运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这
个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,
再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。
考试口诀:++在前先加后用,++在后先用后加。
逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
九)位运算的考查:
会有一到二题考试题目。
总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。
例1:char a = 6, b;
b = a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。
例2:一定要记住,
例3:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以22016计算机二级考试C语言知识点总结2016计算机二级考试C语言知识点总结。
十)018的数值是非法的,八进制是没有8的,逢8进1。
十一)%符号两边要求是整数。不是整数就错了。
十二)两种取整丢小数的情况:
1、int a =1.6;
2、(int)a;
⑷ 2017年计算机二级C语言命题特点及应对策略
一、命题原则
全国计算机等级考试大纲明确规定:二级C语言考试由“二级公共基础知识”和“二级C语言程序设计”两大部分组成,考试内容严格按照“宽口径、厚基础”的原则设计,主要考核我们对该学科的基础理论、基本知识和基本技能的掌握程度,以及运用所学理论和知识解决实际问题的能力。
二、考试要求
根据命题原则,大纲对我们如何复习应试也提出了相应的要求。主要强调了两个方面:
一是 强调我们对基本概念、基本理论和和拿基本知识点的掌握;
二是 强调我们综合运用所学知识进行实际应用到程序编写中的能力。
也就是说,我们要想通过二级C语言考试,不仅要熟练地掌握该学科的基本理论知识和操作技能,还要具有较强的分析与解决实际问题的能力,真正做到学以致用。应做到以下两点:
1.学好基础知识
这里所说的基础知识是指C语言中基本概念、基本原理和规定关键字、基本结构等基本知识点。二级C语言考试中,概念性的知识点比较多。我们对这些基础知识要用心理解、记忆。这一类型题目一般都是考察教材中的概念,如果这样简单的题目都丢分,那就实在可惜。
2.掌握操作技能和综合运用能力
二级C语言考试注重对程序设计实际操作能力的考察,要求我们运用所学理论知识和操作技能解决实际问题。二级C语言考试考核的主要内容就是程序设计的基本操作和把所学理论知识和操作技能综合起来,并能在实际应用中加强对这些知识的熟练掌握。
三、应试对策
我们在备考时,要针对考试大纲和考试要求进行复习,主要应注意以下几个方面:
1.牢固、清晰地掌握基本知识
二级C语言考试的重点是基本知识的掌握情况和实际编程应用,但其前提条件是对基本知识点的掌握。因此,我们正确地理解、熟记基本概念和原理是通过考试的前提条件。那么我们要如何才能做到这一点呢?我们可以通过以下3方面来实现:
① 在考前冲刺阶段要注意“比较总结”学习成果,特别是对一些关系复杂的知识点,通过比较、总结更容易理解、牢记。“比较总结”是一烂衡个好的学习方法,同时也是一个好的增强记忆方法,在C语言中有些问题只有通过综合比较、总结才容易在脑海中留下牢固的印烙;
② 理解概念要准确,尤其是一些容易混淆、重要的概念,一定要在考前冲刺阶段准确地掌握它们之间在操作步骤和实现功能上的细微区别,一定不能忽视;
③ 通过联想记忆各考点,在C语言中有一部分考点不是孤立的,而是相互联系的,我们要能通过一个考点联想到与他相关的考点、这样就能扩大记忆了。
2.选择的习题要有针对性,切不可进行“题海战术”
现在关于二级C语言考试的习题很多,搞题海战术肯定是不行的。我们应根据考试大纲,在考前冲刺阶段适当地做一些与二级C语言考试题型相同饥棚做的题,我们可以做些试卷和历年试题(最近2~3年即可)。研究历年考试题型、分析现在考试形式是通过考试的一个重要法宝,这做可使我们较快地掌握考试题型,从而在最短的时间内达到的学习效果。
注意:根据分析这些年来考试的情况,每年都会有少数新的考点出现,所以在研究历年考题时,不要忽视了一些以往没有考过的知识点,应适当理解记忆。
3.上机实践笔试中程序设计类题目
学习笔试中程序设计类的题目方法是上机操作,验证自己的解题思路和做题结果。通过在计算机上验证这类题,可以发现错误和纠正解题思路,加深我们的记忆。