《2022年2022年计算机等级考试二级C语言重点难点分析与题解 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机等级考试二级C语言重点难点分析与题解 .pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机等级考试二级C 语言重点难点分析与题解第1 章 应试指南(略)第 2 章 数据结构 与算法本章节主要考查算法的基本概念、基本的数据结构及其基本操作、查找和排序算法。本章的内容在历次试题中所占的比例约为11.2%,都是以选择题和填空题的形式出现的。本章历次试题分数分布如表2-1 所示。从表 2-1 中我们可以看出,算法的基本概念、数据结构的定义、栈和树几乎是每次必考的知识点;查找和排序基本上每次有一道试题;线性表、队列和线性链表很少单独出题,但经常与其它知识点结合出题。本章涉及知识点分值在历次试题中比重如图2-1 所示。2.1 算法的基本概念名师资料总结-精品资料欢迎下载-名师精心整理-第
2、 1 页,共 27 页 -从图 2-1 可以看出,该节知识点所占试题比重为18%,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解。历次试题分值在0-4 分之间波动,其变化趋势如图2-2 所示。2.1.1 考点 1:算法的定义算法是对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。一般来说,一个算法具有以下5 个主要的特征。(1)有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。(2)确定性:算法中的每一步都有确切的含义。(3)可行性:算法中的操作能够用已经实现的基本运算执行有限次来实
3、现。(4)输入:一个算法有零个或者多个输入,零个输入就是算法本身缺定了初始条件。(5)输出:一个算法有一个或者多个输出,以反映出数据加工的结果。例 2.1.1 问题处理方案的正确而完整的描述称为_。2005 年 4 月 填空第 5 题 答案:算法例 2.1.2 一个算法应该具有“确定性”等 5 个特性,下面对另外4 个特性的描述中错误的是()。A 有零个或多个输入 B有零个或多个输出 C有穷性 D可行性答案:B 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 27 页 -例 2.1.3 算法具有 5 个特性,以下选项中不属于算法特性的是()。A 有穷性 B简洁性 C可行性 D确定
4、性答案:B 第 3 章 程序设计基础本章主要考查程序设计的一些基本知识,比如程序设计的方法与风格、结构化程序设计与面向对象程序设计的基本思想。从历次的试题来看,本章试题分值约占2.4%,属于非重点考查对象。尽管分值所占的比例较少,但基本上每次至少有一道试题。试题以选择和填空的形式出现。本章历次试题分数分布如表3-1 所示。从表 3-1 中我们可以看出,本章知识点试题的分值在0-4 分之间波动,结构化程序设计和面向对象程序设计是重点。本章涉及的知识点分值在历次试题中比重如图3-1 所示。3.1 程序设计从图 3-1 可以看出,该节知识点所占试题比重为17%,属于非重点考查对象。到目前为止,该知识
5、点只出过一道选择题。从考试大纲来看,主要考查程序设计的方法、程序设计风格。历次试题分值分布如图3-2 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 27 页 -3.1.1 考点 1:程序设计的方法程序是指令的有序集合,它是为了解决某一问题而设计的一系列指令。程序设计是使用计算机系统的指令或语句,组成求解不同问题,实现不同算法所需的完整序列的一个工作过程。随着计算机硬件技术的发展以及计算机技术的广泛应用,根据需求程序设计的方法也经过了几个发展的过程。在程序设计早期,由于受到计算机硬件的限制,运行速度慢,存储空间少,使得 程序员 不得不提高程序的效率,在这种情况下,编程成了一
6、种技巧和艺术,程序的可理解性和可扩充性没有得到重视。在这个时期出现的高级语言有Fortran、COBOL、ALGOL、Basic 等语言,在这个时期不注重程序的结构,可以说这是没有固定程序设计方法的时期。计算机硬件得到了很大的发展,在编程的时候,运行速度和存储空间不再困扰程序员,计算机技术应用范围的扩大使得程序必须要有良好的结构,在这种需求下,提出了结构化程序设计方法。这时出现的高级语言有PASCAL、C 等。20 世纪 60 年代后期,提出了类和对象的概念,程序设计已经不是问题的中心,如何更好地描述问题已经成为了主题,因此在这种情况下,面向对象的程序设计方法发展起来了,并得到广泛地应用。进入
7、20 世纪 80 年代后,出现了一系列的面向对象程序设计语言,如 C+等。下面我们会详细讨论结构化程序设计和面向对象程序设计。3.1.2 考点 2:程序设计的风格我们在编写程序时要养成良好的程序设计习惯,对程序的要求不仅能够在计算机上正确运行,而且要便于阅读和被别人理解,便于程序的调试和维护。好的程序设计风格有助于提高程序的正确性、可读性、可维护性和可名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 27 页 -用性。要使程序具有良好的风格,概括起来可以分成4 部分:源程序文档化、数据说明、语句结构、输入/输出方法。1源程序文档化源程序文档化主要包括:标识符的命名、程序中添加注释以
8、及程序的编辑风格。(1)标识符的命名标识符即符号名,包括变量名、模块名、常量名、标号名、函数名、数据区名和缓冲区名等。一个程序中必然有很多的标识符,特别是在一个复杂大型的程序中,标识符可能成千上万,对标识符作用的正确理解是读懂程序的前提,如果程序员 随意命名标识符,程序的可读性会很差。因此,标识符的命名应该要规范化,具体要根据下面几个原则来命名。选取有实际意义的标识符名称。为了方便理解标识符的作用,标识符的名字要能够反映其作用,如用于存储 数量的变量的名称可以是count 等。为了便于程序的输入,标识符的名字不宜太长。必要时可以用一些缩写,但是要注意缩写规则要一致,并且要给每一个变量加上注释。
9、为了便于区分,不同的标识符不要取过于相似的名字。由于程序中通常需要大量不同类型的标识符,为了使说明部分阅读起来更加清晰,在对其进行类型说明时应注意以下几点:按照某种顺序对各种类型的变量进行集中说明,如先说简单类型,再说明记录类型;在使用一个说明语句对同一类型的多个变量进行说明时,按照变量名中的字母顺序进行排列。(2)程序中加注释注释是程序员与日后的程序读者之间通信的重要工具,用自然语言或伪码描述。它说明了程序的功能,特别在维护阶段,对理解程序提供了明确指导。一些正规的程序文本中,注释行的数量占到整个源程序的1/3 1/2,甚至更多。注释分序言性注释和功能性注释。序言性注释:一般置于每个程序模块
10、的开头部分,它应当给出程序的整体说明,用来引导读者理解程序。主要描述内容可以包括:程序标题、程序功能说明、主要算法、接口说明、有关数据描述、程序位置、开发简历、程序设计者、复审者、复审日期和修改日期等。功能性注释:一般置于程序体中,用来描述其后的语句或程序段是用来做什么的,或者是执行了其下面的语句或程序段会产生什么样的效果,而不要解释下面该怎么做。(3)程序的编辑风格为了使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰,便于程序的理解。可以按照以下几个原则来编辑程序。恰当地利用括号,可以突出运算的优先性,避免发生运算错误。程序段之间可用空行隔开。对于选择语句和循环语句
11、,应该做适当的缩进,使得程序的逻辑结构更加清晰。2数据说明在程序设计时,应该注意数据说明的风格。为了使数据定义更易于理解和维护,有以下指导原则。(1)数据说明顺序应规范化,使数据的属性更易于查找,从而有利于测试、纠错与维护。原则上,数据说明的次序与语法无关,其次序是任意的,但是便于阅读和理解,最好使其规范化,使说明次序按照某种规则固定。例如,按以下顺序:常量说明、类型说明、全程量说明及局部量说明。(2)语句中变量的说明应有序化,多个变量在同一个说明语句中说明时,各变量名按字典序排列。(3)使用注释来说明复杂的数据结构 时,要说明在程序实现这个数据结构时的特点。3语句结构名师资料总结-精品资料欢
12、迎下载-名师精心整理-第 5 页,共 27 页 -单个语句结构是编码阶段的任务,语句结构追求简单直接,不能为了追求效率而使代码复杂化。我们可以根据下面的原则来构造语句。为了便于阅读和理解,不要一行多个语句。不同层次的语句采用缩进形式,使程序的逻辑结构和功能特征更加清晰。要避免复杂的判定条件,避免多重的循环嵌套。表达式中使用括号以提高运算次序的清晰度。程序编写首先应当考虑程序结构的清晰性,不要刻意追求技巧性,使得程序复杂。除非对效率有特殊要求,否则先要考虑程序的清晰性,不要追求高效率而丧失程序的清晰度。程序编写要简单,要直截了当地表达出程序员 的用意。首先要保证程序正确,然后才要求提高速度。避免
13、使用临时变量而使程序可读性下降。尽可能使用库函数。4输入和输出输入和输出是程序的一个重要的组成部分,是用户和计算机交互直接相关的。输入和输出的方式应当尽量方便用户的使用。一定要避免输入输出的不当而导致用户使用软件麻烦。因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。软件能否被用户接受,有时就取决于输入和输出的风格。一个良好的输入输出风格能够使用户很方便地使用系统,我们在编码阶段可以根据下面的原则来设计一个好的输入输出。对所有输入的数据都要进行有效性检查,要能够识别出错误的输入,对错误的输入做出异常处理,使得每个输入数据都具有有效性。检查输入数据项的各种重要组合的合理性,必要时
14、报告输入状态信息。在输入时,输入的步骤和方式应该尽量简单。输入数据时,应允许使用自由格式输入。允许默认值 输入一批数据时,最好使用输入结束标志,而不要用户指定输入数据数目。在交互输入时,要给用户提示信息,如可使用选择项的种类和取值范围,在输入结束时,给出状态信息。当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性。给所有的输出加注解,并设计输出报表格式。例 3.1.1 以下叙述中错误的是()。2005 年 9 月 选择第 11 题 A用户所定义的标识符允许使用关键字B用户所定义的标识符应尽量做到“见名知意”C用户所定义的标识符必须以字母或下划线开头D用户定义的标
15、识符中,大、小写字母代表不同标识答案:A 第 4 章 软件工程 基础本章主要掌握以下几个方面内容。(1)软件工程的基本概念、软件生命周期概念、软件工具和软件开发环境;(2)结构化分析方法、数据流图、数据字典和软件需求规格说明书;(3)结构化设计方法、总体设计和详细设计名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 27 页 -(4)软件测试 的方法、白盒测试与黑盒测试、测试用例设计、软件测试的实施、单元测试、集成测试和系统测试;(5)程序调试、静态调试与动态调试;(6)软件维护。通过对历次试卷内容的分析,软件工程考核内容占卷面分数6.8%。历次试题分数分布如表4-1 所示。从表
16、4-1 可以看出,软件工程历次试题分数均在6-10 分之间。其中,结构化设计方法和软件测试几乎每次必考,这两节应重点掌握。程序调试和软件维护试题均在0-2 分之间波动,也应该引起注意。到目前为止,还没有出过与结构化分析方法相关的题目,但切不可掉以轻心。3例题例 4.1.1 下列描述中正确的是()。2005 年 4 月 选择第 8 题 A 程序就是软件 B软件开发不受计算机系统的限制 C软件既是逻辑实体,又是物理实体 D是程序、数据与相关文档的集合答案:D 例 4.1.2 下列描述中正确的是()。2005 年 9 月 选择第 5 题 A 软件工程 只是解决软件项目的管理问题 B软件工程主要解决软
17、件产品的生产率问题 C软件工程的主要思想是强调在软件开发过程中需要应用工程化原则名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 27 页 -D软件工程只是解决软件开发中的技术问题答案:C 第 5 章 数据库设计基础本章主要掌握以下几个方面内容。(1)数据库的基本概念、数据库、数据库管理系统和数据库系统;(2)数据模型、实体联系模型、E-R 图和从 E-R 图导出关系数据模型;(3)关系代数运算(包括集合运算及选择、投影、连接运算)和数据库规范化理论;(4)数据库设计方法和步骤、需求分析、概念设计、逻辑设计和物理设计的相关策略。通过对历次试卷内容的分析,本章考核内容占卷面分数8.8
18、%。历次试题分数分布如表5-1 所示。从表 5-1 可以看出,数据库基础知识和数据模型每次必考,且分值比重较大,应该重点掌握。关系运算与数据库设计试题所占比例虽不算太大,但对这两节的相关知识也应该充分理解。从最近一次考试看,各章试题分数有趋同的倾向。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 27 页 -数据库设计基础涉及知识点分值在历年试题中的比重如图5-1 所示。5.1 数据库基础知识信息在现代社会中起着越来越重要的作用,信息 资源 的开发和利用水平已成为衡量一个国家综合国力的重要标志。在计算机应用领域中,数据处理是其主要方面。数据库技术就是作为数据处理中的一门技术而发展
19、起来的。本节介绍数据库系统的基本概念和发展历史,初步了解数据库系统的概貌。数据库基础知识所涉及的试题分值在本章中所占比重为41%,试题分值变化趋势如图5-2 所示。5.1.1 考点 1:数据库名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 27 页 -数据库(Database,DB)可以看成是长期存储 在计算机内的、大量的、有结构的和可共享的数据集合。数据是描述现实世界中各种具体事物和抽象概念的可存储并有明确意义的信息。数据库可以被直观地理解为存放数据的仓库,只不过这个仓库是在计算机的大容量存储器上,例如,硬盘就是一种最常见的计算机大容量存储设备。数据必须按一定的格式存放,因为它
20、不仅需要存放,而且还要便于查找。数据库的特点如下(1)数据按一定的数据模型组织、描述和储存。(2)冗余度较小。数据共享大大减少了数据冗余。(3)数据独立性较高。数据独立性是数据库领域中一个常用的术语,也是数据库技术的重要特点之一。数据独立性是指数据的组织结构和存储方法与应用程序互不依赖、彼此独立。它包括数据的物理独立性和数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,也就是当数据的物理存储改变了,用户程序也可以不变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。(4)易扩展。(5)可为各
21、种用户共享。不同的用户可以使用同一个数据库,可以取出他们所需要的子集,而且容许子集任意重叠。例 5.1.1 数据独立性是数据库技术的重要特点之一。所谓数据独立性,是指()。2005 年 4 月 选择第 9 题 A数据与程序独立存放 B不同的数据被存放在不同的文件中 C不同的数据只能被对应的应用程序所使用 D以上三种说法都不对答案:D 例 5.1.2 数据库设计的根本目标是要解决()。2005 年 9 月 选择第 8 题 A数据共享问题 B数据 安全 问题 C大量数据 存储 问题 D简化数据维护答案:A 例 5.1.3 下列叙述中正确的是()。2004 年 9 月 选择第 9 题 A数据库系统是
22、一个独立的系统,不需要操作系统 的支持 B数据库设计是指设计数据库管理系统 C数据库技术的根本目标是要解决数据共享的问题 D数据库系统中,数据的物理结构必须与逻辑结构一致名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 27 页 -答案:C 第 6 章 C 程序设计的初步知识本章主要考查C 程序构成与格式、常用数据类型、运算符和表达式。通过对历年试卷内容的分析,本章考核内容约占12%,属于重点考查内容。由命题走势图6-1 可知,本章部分所涉及考题分值有下降的趋势。6.1 C 程序简介6.1.1 考点 1:C 源程序编译与执行由高级语言编写的程序称为“源程序”,机器可以接受和处理的
23、二进制代码称为“目标程序”,把“源程序”翻译成“目标程序”的软件称为“编译程序”。每一种高级语言都有与它对应的编译程序,C 语言也不例外,其编译程序的功能如图6-2 所示。由 C 语言构成的指令序列称C 源程序,C 源程序经过C 语言编译程序编译之后生成一个后缀为.OBJ 的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ 文件与 C 语言提供的各种库函数连接起来生成一个后缀为.EXE 的可执行文件。在DOS 状态下,输入此文件名字(不必输入后缀.EXE),该文件就可以执行。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 27 页 -例 6.1.1 以下叙述中错误的
24、是()。2006 年 4 月 选择第 44 题 AC 语言源程序经编译后生成后缀为.obj 的目标程序BC 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C用 C 语言编写的程序称为源程序,它以ASCII 代码形式存放在一个文本文件中DC 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令答案:D 第 7 章顺序结构程序设计本章主要考查输入输出和顺序结构设计方法。顺序结构程序设计属于最基本的程序设计方法之一,掌握这一部分对后续学习及程序阅读作用极大。通过对历年试卷内容的分析,本章考核内容约占4%,属于一般考查对象,由下面的命题走势图7-1 可知,本节部分所
25、涉及的直接考题有下降的趋势,但是由于这部分内容属于基础考点,别的试题或多或少与之相关,所以考生务必熟练掌握这一部分内容。7.1 基本概念7.1.1 考点 1:顺序程序概述顺序结构是按照语句的排列顺序依次执行。流程图如图7-2 所示,程序执行完语句组1 后再接着按照顺序执行语句组2。名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 27 页 -有一个比较经典的例子来表达顺序结构的思想:交换 两整数的值。例如,a=0,b=99,交换 a,b 的值,达到最后的结果a=99,b=0。在实现这个算法的时候,定义一个中间变量c,用它来临时保存a 的值,再把b 的值赋给 a,这个时候a就得到
26、b 的值的,我们再把保存a的变量 c 赋给 b,这时 b 就得到原 a 的值,正确的程序为:void main()int a,b;int c;a=0;b=99;c=a;a=b;b=c;执行完这 3 条语句后 a=99,b=0。如果改变其顺序,写成:void main()int a,b;int c;a=0;b=99;a=b;c=a;b=c;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 27 页 -则执行结果就变成a=b=99,不能达到预期目的。因为程序顺序执行,所以先把b 的值赋给a,a 变成 99,然后再把 a 赋给 c,c 也变成 99,这时再把c 赋给 b,b 也变成 9
27、9,没有达到我们程序的目的。按照上面的程序,顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构。例如,计算长方形的面积,其程序的语句顺序就是输入长方形的长length 和宽 wide,计算“S=length*wide”,输出它的面积S。而大多数情况下,顺序结构都是作为程序的一部分,与其他结构一起构成一个复杂的程序,例如,分支结构中的块体、循环结构中的循环体等。例 7.1.1 下列描述正确的是()。A顺序结构不能单独构成一个完整的程序B顺序结构、循环结构、选择结构是三种最基本的结构C程序从文件最开始执行,不一定是从main 函数开始执行D程序按照语句的书写
28、顺序执行答案:B 第 8 章 选择结构程序设计本章主要考查选择结构设计方法,其中包括关系运算符、逻辑运算符、条件运算符以及最常见的if 条件判断语句。选择结构程序属于3 种基本的程序设计方法之一。通过对历年试卷内容的分析,本章考核内容约占4%,属于一般考查内容,由下面的命题走势图8-1 可知,本章部分所涉及的直接考题有上升的趋势。8.1 基本概念8.1.1 考点 1:关系运算和逻辑运算选择结构是按照条件的真假选择执行某段代码。流程图如图8-2 所示,如果条件1 为真,则执行语句组1;否则执行语句组2。名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 27 页 -条件 1 中的真(
29、T)和假(F)就是 C 语言 中的两种逻辑值,真用非0 代表,假用0 代表。关系运算和逻辑运算的结果只有真(非0)或者假(0)。关系运算符包括=(等于)、!=(不等于)、(小于)、(大于)、=(大于等于)。优先级的关系是=和!=比其余的低,相同的优先级运算规则是从左到右。例如,1=1(真),1!=1(假),12(真),22(假),2=2(真)。若 a=5,b=3,c=1,则abc 的计算过程是:先计算 ab,结果为真,值为1;再计算 1c,结果为假,值为0,所以 abc 表达式为假。f=bc!=a 的计算过程是:先计算 bc,结果为 1;再计算 1!=a 结果为 1;最后将 1 赋值给 f。逻
30、辑运算符包括!(逻辑非)、&(逻辑与)、|(逻辑或),!的优先级最高,其次是&和|。例如:若 x=10,则!x 的结果为假,值为0;若 a=3,b=0,则 a&b 的结果为假,值为0;5&0|8 的值为 1。(1)所有的运算符的优先级的关系是!算术运算符 关系运算符&|赋值运算符,对于有疑问的,请一律用括号来明确。名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 27 页 -(2)在逻辑表达式的求解中,并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算才能求出表达式解的时候,才去执行下一个运算符。某些情况会发生短路现象,一般是在&和|的运算中产生。例如:当 a=5,b=3,
31、c=2,d=1,x=1,y=1 时,表达式(x=ab)&(y=cd)的计算规则是:首先计算“ab”,结果为 0,则 x=0,这个时候可以确定这个表达式的值为假,因此“y=cd”不会被执行,所以y 的值仍为1 而不是 0。又如,a+|b+,因为 a+已经为真,所以这个时候整个表达式的值已经可以确定为真,不用去计算b+的值,这个时候b 的值没有变化。(3)数学表达式0 x10 表示 x 的值大于0小于 10,但在 C 语言 中不能用这种逻辑来表达上述关系,因为无论 x 为何值,上面的表达式都为真。“00&x10。这是数学语言和程序设计语言中表达相同意思的一个区别。(4)关于实数相等的比较。在计算机
32、中,通常存放在内存中的实数是有误差的,因此不能精确相等,将导致 x=y 的值总是假。可以通过abs(x-y)b!=c 和 a(b!=c)的执行顺序是一样的 B!a!=(b!=c)表达式的值为1 Ca|(b=c)执行后 b 的值为 0 Da&bc 的结果为假答案:B 解析:A 中的优先级大于!=,所以执行顺序不一样;C 中不用执行b=c,因为 a 就可以确定这个表达式的值;D 中 a 和 bc 都为真,所以整个表达式为真。第 9 章 循环结构程序设计本章主要考查循环结构设计方法,其中包括while、do-while、for 语句的使用,以及continue 和 break 循环控制语句。循环结构
33、程序属于3 种基本的程序设计方法之一,其特点是在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C 语言 提供了多种循环语句,可以组成各种不同形式的循环结构。通过对历年试卷内容的分析,本章考核内容约占9%,属于重点考查内容,由下面的命题走势图9-1 可知,本节部分所涉及的考题有上升的趋势。名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 27 页 -9.1 while 和 do-while 循环结构 9.1.1 考点 1:while 语句一般形式为:while(表达式)语句组 其中,表达式是循环条件,语句组为循环体,当语句
34、组只有一条语句时,可以省略花括号。其执行过程如下。(1)计算表达式的值,如果为假(或者0),执行 3;否则执行2(2)执行语句组,然后执行1(3)跳出 while 循环例如:while(getchar()!=n);/当输入回车的时候退出。int i=10;while(i)printf(%d,i);i-;/输出从 10 到 1 的数据,在0 的时候退出。对 while 语句的几点说明。名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 27 页 -(1)在 while 循环体内也允许空语句,如第一个例子中,并且当循环条件一开始就为假(或为0)的时候,循环体不执行一次,直接跳出循环。(
35、2)可以有多层while 循环嵌套。(3)语句组是多条语句的时候,必须用“和”括起来。(4)while 语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0),即可继续循环,应该避免非人为的死循环。例 9.1.1 有以下程序 main()int y=10;while(y-);printf(y=%dn,y);程序执行后的输出结果是()。2006 年 4 月选择第 30 题 Ay=0 B y=-1 Cy=1 Dwhile 构成无限循环答案:B 解析:注意这个while 语句循环体是空语句,一直执行到y-为 0,只有当y0 的时候执行y-才为 0,这个时候退出循环,但是y 已经是-1
36、。此类题目,可以列出每次循环的循环变量的值分析,选择更形象。第 10 章 函数本章主要考查函数的定义与调用、函数中的数据传递和变量的类型等,包括函数的基本概念、函数的返回值、参数传递中的传值方法与传地址方法、函数递归调用的分析、静态 存储 变量的特点和全局变量与局部变量的作用域等。通过对历年试卷内容的分析,本章考核内容约占卷面分数的10%,属于重点考查内容。由命题走势图10-1可知,本节部分所涉及考题分值逐渐上升,目前已呈平稳趋势。名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 27 页 -10.1 函数基本概念 10.1.1 考点 1:函数的概念函数是 C 语言 的基本组成部
37、分,用来完成子程序的功能。一个完整的C 程序包括一个main()函数(主函数)和若干个其他函数,C 程序从 main()函数开始执行,当main()函数执行完毕时,整个程序就结束了。在 C 语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但 main()函数不能被调用。根据用户使用情况,函数可以分为库函数和自定义函数两种。根据函数的形式,函数可以分为无参函数和有参函数。例 10.1.1 以下关于函数的叙述中正确的是()。2005 年 9 月 选择第 14 题 A 每个函数都可以被其他函数调用(包括main()函数)B每个函数都可以被单独编译 C每个
38、函数都可以单独运行 D在一个函数内部可以定义另一个函数解析:main()函数不能被调用,A 选项错误;C 程序的执行必须从main()函数开始,C 选项错误;函数不能嵌套定义,D 选项错误。答案:B 例 10.1.2 以下叙述中错误的是()。2006 年 4 月 选择第 46 题 A C 程序必须由一个或一个以上的函数组成 B函数调用可以作为一个独立的语句存在 C若函数有返回值,必须通过return 语句返回 D函数形参的值也可以传回给对应的实参答案:D 第 11 章 指针与数组名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 27 页 -本章主要考查指针的基础知识、数组的基础知
39、识和字符串的应用,包括指针的基本应用、一维数组的基本应用、二维数组的基本应用、指针和数组的关系、指针与数组在函数参数传递中的应用、字符数组的应用和字符串的应用等。通过对历年试卷内容的分析,本章考核内容约占卷面分数的19%,属于重点考查内容,由命题走势图11-1可知,本章部分所涉及考题分值逐渐下降,目前已呈平稳趋势。11.1 指针基础知识指针是 C 语言 的精华之一,合理地运用指针可以有效地利用内存,提高程序效率,完成复杂的数据结构。11.1.1 考点 1:地址、指针和指针变量计算机内存是一个连续编码的单元,每个存储 单元都有一个固定的编号,这个编号就是地址。在C 程序中定义变量,编译系统都会给
40、这个变量分配相应的存储单元,因此C 语言中的变量就代表了内存中的一些存储单元,该单元的固定编号就是变量的地址,也称为指针。在 C 语言中存在直接存取和间接存取两种访问内存数据的方法。前者利用变量名隐式地访问内存:首先定义变量,然后由编译系统完成从变量名到内存地址的映射工作,用户通过变量名访问内存空间,变量地址对用户完全透明。后者则通过指针显式地访问内存:用户直接使用变量的地址,或者将变量的地址值储存于特殊的变量中,然后通过此特殊的变量获取地址值访问内存。这个专门存放地址的特殊的变量就是指针变量,又称为指向某变量的指针。为了更好地使用指针变量,C 语言提供了获取变量地址和通过地址访问变量的运算符
41、“&”和“*”。(1)取地址运算符“&”,使用格式为:&变量名,如&a 表示变量a 在内存中的地址。本运算符实现从变量到名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 27 页 -地址的转化。(2)指针运算符“*”,使用格式为:*指针变量名,如*p 表示指针变量p 所指向的变量的值。本运算符实现从地址到变量的转化。第 12 章 编译预处理与动态存储 分配本章主要考查编译预处理与动态存储分配。通过对历年试卷内容的分析,本章考核内容约占3%,属于非重点考查内容。由命题走势图12-1 可知,本章部分所涉及考题分值基本上是稳定的。12.1 编译预处理 12.1.1 考点 1:预处理概述
42、在 C 语言 程序中,会出现以“#”号开头的预处理命令。如包含命令#include,宏定义命令#define 等。在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C 语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分做处理,处理完毕自动编译源程序。C 语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。后面将介绍常用的几种预处理
43、功能。例 12.1.1 以下叙述中正确的是()。2005 年 4 月 选择第 37 题 A 预处理命令行必须位于源文件的开头名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 27 页 -B在源文件的一行上可以有多条预处理命令 C宏名必须用大写字母表示 D宏替换不占用程序的运行时间答案:D 例 12.1.2 以下叙述中正确的是()。2006 年 4 月 选择第 49 题 A 预处理命令行必须位于源程序的起始位置 B在 C 语言中,预处理命令行都以“#”开头 C每个 C 语言必须在开头包含预处理命令行:#include DC 语言的预处理不能实现宏定义和条件编译的功能答案:B 第 1
44、3 章 结构体与共用体本章主要考查类型定义符typedef、结构体(即“结构”)与共用体(即“联合”),包括类型定义符typedef,结构体和共用体类型数据的定义方法和引用方法,结构指针变量,结构数组,用指针和结构体构成链表,单向链表的建立、输出、删除与插入等知识点。通过对历年试卷内容的分析,本章考核内容约占5%,属于一般考查内容。由命题走势图13-1 可知,本章部分所涉及考题分值有减少趋势。13.1 类型定义符 13.1.1 考点 1:typedef 名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 27 页 -C 语言 不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说
45、明符,也就是说,允许由用户为已存在的数据类型名定义一个“别名”。类型定义符typedef 即可用来完成此功能。说明新类型名的语句一般形式为:typedef 类型名标识符;这里的“类型名”必须是在此语句之前已有定义的类型标识符,可以是任何基本类型、结构或联合类型符号,也可以是 typedef 定义的类型名。“标识符”是一个用户定义标识符,用作新的类型名。例如:typedef int INTEGER;该语句把一个用户命名的标识符INTEGER 说明成一个int 类型的类型名。在此说明之后,就可以用INTEGER来代替 int 做整型变量的类型说明了。例如,INTEGER a,b;它等效于int a
46、,b;【警钟长鸣】对于类型定义符typedef,考生需要注意以下几点。(1)typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有的类型名依然有效。(2)新类型名一般用大写表示,以便区别。(3)也可用宏定义来代替typedef 的功能,但是宏定义是由预处理完成的,而typedef 则是在编译时完成的,后者更为灵活方便。(4)用 typedef 定义新类型名可以使程序参数化,便于移植;如果将影响程序移植的因素定义成符号,则程序移植时只需要修改相应的符号定义,而不需要修改程序。(5)用 typedef 定义数组、指针、结构等类型将带来很大的方便,不仅使程序
47、书写简单,而且使程序意义更为明确,也增强了程序的可读性。例如:typedef char NAME20 表示 NAME 是字符数组类型,数组长度为20。然后可用NAME 说明变量,如:NAME a1,a2,s1,s2 完全等效于:char a120,a220,s120,s220 例 13.1.1 以下叙述中错误的是()。2006 年 4 月填空第50 题 A可以通过typedef 增加新的类型 B可以用typedef 将已存在的类型用一个新的名字来代表 C用 typedef 定义新的类型名后,原有类型名仍有效名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 27 页 -D用 typ
48、edef 可以为各种类型起别名,但不能为变量起别名答案:A 第 14 章 位运算本章主要考查常用位运算符的使用。通过对历年试卷内容的分析,本章考核内容约占1%,属于非重点考查内容。由命题走势图14-1 可知,本节部分所涉及考题分值比较少,但也不排除下次出题的可能性。14.1 位运算符 14.1.1 考点 1:常用位运算符前面介绍的各种运算都以字节为基本单位,但某些系统程序要求在位(bit)一级进行运算或处理,为此,C 语言提供位运算满足该要求。需要注意的是,位运算的对象只能是整型或字符型数据,不能是其他类型的数据。C 语言提供的6 种位运算符及其功能如表14-1 所示。名师资料总结-精品资料欢
49、迎下载-名师精心整理-第 24 页,共 27 页 -以上位运算符中,只有“反”()为单目运算符,其余均为双目运算符。各双目运算符与赋值运算符结合可以组成扩展的赋值运算符,其表示形式及含义如表14-2 所示。例 14.1.1 设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是()。A c1c2 Bc1&c2 C c2 Dc1|c2 答案:A 第 15 章 文 件 操 作本章只要求缓冲文件系统,对非标准 缓冲文件系统不要求。主要考查文件类型指针(FILE 类型指针)、文件打开与关闭(fopen、fclose)、文件读写(fputc、fgetc、fputs、fgets、fre
50、ad、fwrite、fprintf、fscanf)、文件定位(rewind、fseek)等。通过对历年试卷内容的分析,本章考核内容约占3%,属于非重点考查内容。由命题走势图 15-1 可知,本章部分所涉及考题分值趋向稳定。名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 27 页 -15.1 文件指针 15.1.1 考点 1:文件基本概念 1文件记录在外部介质上的数据的集合。2存取方式C 语言 中有两种存取数据的方式。顺序存取:当“打开”文件进行读或写操作时总是从文件的开头开始,从头到尾顺序读或写。直接存取:又称随机存取文件,可以通过调用C 语言的库函数来指定开始读(写)的字节号