当前位置:文档之家› 计算机二级C语言重点难点分析与题解

计算机二级C语言重点难点分析与题解

计算机二级C语言重点难点分析与题解
计算机二级C语言重点难点分析与题解

计算机等级考试二级C语言重点难点分析与题解第1章应试指南

第2章数据结构与算法

本章节主要考查算法的基本概念、基本的数据结构及其基本操作、查找和排序算法。本章的内容在历次试题中所占的比例约为11.2%,都是以选择题和填空题的形式出现的。

本章历次试题分数分布如表2-1所示。

从表2-1中我们可以看出,算法的基本概念、数据结构的定义、栈和树几乎是每次必考的知识点;查找和排序基本上每次有一道试题;线性表、队列和线性链表很少单独出题,但经常与其它知识点结合出题。

本章涉及知识点分值在历次试题中比重如图2-1所示。

2.1 算法的基本概念

从图2-1可以看出,该节知识点所占试题比重为18%,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解。历次试题分值在0-4分之间波动,其变化趋势如图2-2所示。

2.1.1 考点1:算法的定义

算法是对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。一般来说,一个算法具有以下5个主要的特征。

(1)有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。

(2)确定性:算法中的每一步都有确切的含义。

(3)可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。

(4)输入:一个算法有零个或者多个输入,零个输入就是算法本身缺定了初始条件。

(5)输出:一个算法有一个或者多个输出,以反映出数据加工的结果。

例2.1.1 问题处理方案的正确而完整的描述称为______。[2005年4月填空第5题]

答案:算法

例2.1.2 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。

A.有零个或多个输入 B.有零个或多个输出

C.有穷性 D.可行性

答案:B

例2.1.3 算法具有5个特性,以下选项中不属于算法特性的是()。

A.有穷性 B.简洁性 C.可行性 D.确定性

答案:B

第3章程序设计基础

本章主要考查程序设计的一些基本知识,比如程序设计的方法与风格、结构化程序设计与面向对象程序设计的基本思想。从历次的试题来看,本章试题分值约占2.4%,属于非重点考查对象。尽管分值所占的比例较少,但基本上每次至少有一道试题。试题以选择和填空的形式出现。本章历次试题分数分布如表3-1所示。

从表3-1中我们可以看出,本章知识点试题的分值在0-4分之间波动,结构化程序设计和面向对象程序设计是重点。

本章涉及的知识点分值在历次试题中比重如图3-1所示。

3.1 程序设计

从图3-1可以看出,该节知识点所占试题比重为17%,属于非重点考查对象。到目前为止,该知识点只出过一道选择题。从考试大纲来看,主要考查程序设计的方法、程序设计风格。历次试题分值分布如图3-2所示。

3.1.1 考点1:程序设计的方法

程序是指令的有序集合,它是为了解决某一问题而设计的一系列指令。程序设计是使用计算机系统的指令或语句,组成求解不同问题,实现不同算法所需的完整序列的一个工作过程。随着计算机硬件技术的发展以及计算机技术的广泛应用,根据需求程序设计的方法也经过了几个发展的过程。

在程序设计早期,由于受到计算机硬件的限制,运行速度慢,存储空间少,使得程序员不得不提高程序的效率,在这种情况下,编程成了一种技巧和艺术,程序的可理解性和可扩充性没有得到重视。在这个时期出现的高级语言有Fortran、COBOL、ALGOL、Basic等语言,在这个时期不注重程序的结构,可以说这是没有固定程序设计方法的时期。

计算机硬件得到了很大的发展,在编程的时候,运行速度和存储空间不再困扰程序员,计算机技术应用范围的扩大使得程序必须要有良好的结构,在这种需求下,提出了结构化程序设计方法。这时出现的高级语言有PASCAL、C等。20世纪60年代后期,提出了类和对象的概念,程序设计已经不是问题的中心,如何更好地描述问题已经成为了主题,因此在这种情况下,面向对象的程序设计方法发展起来了,并得到广泛地应用。进入20世纪80年代后,出现了一系列的面向对象程序设计语言,如C++等。

下面我们会详细讨论结构化程序设计和面向对象程序设计。

3.1.2 考点2:程序设计的风格

我们在编写程序时要养成良好的程序设计习惯,对程序的要求不仅能够在计算机上正确运行,而且要便于阅读和被别人理解,便于程序的调试和维护。好的程序设计风格有助于提高程序的正确性、可读性、可维护性和可

用性。要使程序具有良好的风格,概括起来可以分成4部分:源程序文档化、数据说明、语句结构、输入/输出方法。

1.源程序文档化

源程序文档化主要包括:标识符的命名、程序中添加注释以及程序的编辑风格。

(1)标识符的命名

标识符即符号名,包括变量名、模块名、常量名、标号名、函数名、数据区名和缓冲区名等。一个程序中必然有很多的标识符,特别是在一个复杂大型的程序中,标识符可能成千上万,对标识符作用的正确理解是读懂程序的前提,如果程序员随意命名标识符,程序的可读性会很差。

因此,标识符的命名应该要规范化,具体要根据下面几个原则来命名。

①选取有实际意义的标识符名称。为了方便理解标识符的作用,标识符的名字要能够反映其作用,如用于存储数量的变量的名称可以是count等。

②为了便于程序的输入,标识符的名字不宜太长。必要时可以用一些缩写,但是要注意缩写规则要一致,并且要给每一个变量加上注释。

③为了便于区分,不同的标识符不要取过于相似的名字。

④由于程序中通常需要大量不同类型的标识符,为了使说明部分阅读起来更加清晰,在对其进行类型说明时应注意以下几点:按照某种顺序对各种类型的变量进行集中说明,如先说简单类型,再说明记录类型;在使用一个说明语句对同一类型的多个变量进行说明时,按照变量名中的字母顺序进行排列。

(2)程序中加注释

注释是程序员与日后的程序读者之间通信的重要工具,用自然语言或伪码描述。它说明了程序的功能,特别在维护阶段,对理解程序提供了明确指导。一些正规的程序文本中,注释行的数量占到整个源程序的1/3~1/2,甚至更多。注释分序言性注释和功能性注释。

①序言性注释:一般置于每个程序模块的开头部分,它应当给出程序的整体说明,用来引导读者理解程序。主要描述内容可以包括:程序标题、程序功能说明、主要算法、接口说明、有关数据描述、程序位置、开发简历、程序设计者、复审者、复审日期和修改日期等。

②功能性注释:一般置于程序体中,用来描述其后的语句或程序段是用来做什么的,或者是执行了其下面的语句或程序段会产生什么样的效果,而不要解释下面该怎么做。

(3)程序的编辑风格

为了使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰,便于程序的理解。可以按照以下几个原则来编辑程序。

①恰当地利用括号,可以突出运算的优先性,避免发生运算错误。

②程序段之间可用空行隔开。

③对于选择语句和循环语句,应该做适当的缩进,使得程序的逻辑结构更加清晰。

2.数据说明

在程序设计时,应该注意数据说明的风格。为了使数据定义更易于理解和维护,有以下指导原则。

(1)数据说明顺序应规范化,使数据的属性更易于查找,从而有利于测试、纠错与维护。原则上,数据说明的次序与语法无关,其次序是任意的,但是便于阅读和理解,最好使其规范化,使说明次序按照某种规则固定。例如,按以下顺序:常量说明、类型说明、全程量说明及局部量说明。

(2)语句中变量的说明应有序化,多个变量在同一个说明语句中说明时,各变量名按字典序排列。

(3)使用注释来说明复杂的数据结构时,要说明在程序实现这个数据结构时的特点。

3.语句结构

单个语句结构是编码阶段的任务,语句结构追求简单直接,不能为了追求效率而使代码复杂化。我们可以根

据下面的原则来构造语句。

①为了便于阅读和理解,不要一行多个语句。

②不同层次的语句采用缩进形式,使程序的逻辑结构和功能特征更加清晰。

③要避免复杂的判定条件,避免多重的循环嵌套。

④表达式中使用括号以提高运算次序的清晰度。

⑤程序编写首先应当考虑程序结构的清晰性,不要刻意追求技巧性,使得程序复杂。

⑥除非对效率有特殊要求,否则先要考虑程序的清晰性,不要追求高效率而丧失程序的清晰度。

⑦程序编写要简单,要直截了当地表达出程序员的用意。

⑧首先要保证程序正确,然后才要求提高速度。

⑨避免使用临时变量而使程序可读性下降。

⑩尽可能使用库函数。

4.输入和输出

输入和输出是程序的一个重要的组成部分,是用户和计算机交互直接相关的。输入和输出的方式应当尽量方便用户的使用。一定要避免输入输出的不当而导致用户使用软件麻烦。因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。软件能否被用户接受,有时就取决于输入和输出的风格。

一个良好的输入输出风格能够使用户很方便地使用系统,我们在编码阶段可以根据下面的原则来设计一个好的输入输出。

①对所有输入的数据都要进行有效性检查,要能够识别出错误的输入,对错误的输入做出异常处理,使得每个输入数据都具有有效性。

②检查输入数据项的各种重要组合的合理性,必要时报告输入状态信息。

③在输入时,输入的步骤和方式应该尽量简单。

④输入数据时,应允许使用自由格式输入。

⑤允许默认值

⑥输入一批数据时,最好使用输入结束标志,而不要用户指定输入数据数目。

⑦在交互输入时,要给用户提示信息,如可使用选择项的种类和取值范围,在输入结束时,给出状态信息。

⑧当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性。

⑨给所有的输出加注解,并设计输出报表格式。

例3.1.1 以下叙述中错误的是()。[2005年9月选择第11题]

A.用户所定义的标识符允许使用关键字

B.用户所定义的标识符应尽量做到“见名知意”

C.用户所定义的标识符必须以字母或下划线开头

D.用户定义的标识符中,大、小写字母代表不同标识

答案:A

第4章软件工程基础

本章主要掌握以下几个方面内容。

(1)软件工程的基本概念、软件生命周期概念、软件工具和软件开发环境;

(2)结构化分析方法、数据流图、数据字典和软件需求规格说明书;

(3)结构化设计方法、总体设计和详细设计

(4)软件测试的方法、白盒测试与黑盒测试、测试用例设计、软件测试的实施、单元测试、集成测试和系统测试;

(5)程序调试、静态调试与动态调试;

(6)软件维护。

通过对历次试卷内容的分析,软件工程考核内容占卷面分数6.8%。历次试题分数分布如表4-1所示。

从表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.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

答案:C

第5章数据库设计基础

本章主要掌握以下几个方面内容。

(1)数据库的基本概念、数据库、数据库管理系统和数据库系统;

(2)数据模型、实体联系模型、E-R图和从E-R图导出关系数据模型;

(3)关系代数运算(包括集合运算及选择、投影、连接运算)和数据库规范化理论;

(4)数据库设计方法和步骤、需求分析、概念设计、逻辑设计和物理设计的相关策略。

通过对历次试卷内容的分析,本章考核内容占卷面分数8.8%。历次试题分数分布如表5-1所示。

从表5-1可以看出,数据库基础知识和数据模型每次必考,且分值比重较大,应该重点掌握。关系运算与数据库设计试题所占比例虽不算太大,但对这两节的相关知识也应该充分理解。从最近一次考试看,各章试题分数有趋同的倾向。

数据库设计基础涉及知识点分值在历年试题中的比重如图5-1所示。

5.1 数据库基础知识

信息在现代社会中起着越来越重要的作用,信息资源的开发和利用水平已成为衡量一个国家综合国力的重要标志。在计算机应用领域中,数据处理是其主要方面。数据库技术就是作为数据处理中的一门技术而发展起来的。本节介绍数据库系统的基本概念和发展历史,初步了解数据库系统的概貌。

数据库基础知识所涉及的试题分值在本章中所占比重为41%,试题分值变化趋势如图5-2所示。

5.1.1 考点1:数据库

数据库(Database,DB)可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据是描述现实世界中各种具体事物和抽象概念的可存储并有明确意义的信息。

数据库可以被直观地理解为存放数据的仓库,只不过这个仓库是在计算机的大容量存储器上,例如,硬盘就是

一种最常见的计算机大容量存储设备。数据必须按一定的格式存放,因为它不仅需要存放,而且还要便于查找。

数据库的特点如下

(1)数据按一定的数据模型组织、描述和储存。

(2)冗余度较小。数据共享大大减少了数据冗余。

(3)数据独立性较高。数据独立性是数据库领域中一个常用的术语,也是数据库技术的重要特点之一。数据独立性是指数据的组织结构和存储方法与应用程序互不依赖、彼此独立。它包括数据的物理独立性和数据的逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,也就是当数据的物理存储改变了,用户程序也可以不变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。

(4)易扩展。

(5)可为各种用户共享。不同的用户可以使用同一个数据库,可以取出他们所需要的子集,而且容许子集任意重叠。

例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.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

答案:C

第6章C程序设计的初步知识

本章主要考查C程序构成与格式、常用数据类型、运算符和表达式。通过对历年试卷内容的分析,本章考核内容约占12%,属于重点考查内容。由命题走势图6-1可知,本章部分所涉及考题分值有下降的趋势。

6.1 C程序简介

6.1.1 考点1:C源程序编译与执行

由高级语言编写的程序称为“源程序”,机器可以接受和处理的二进制代码称为“目标程序”,把“源程序”翻译成“目标程序”的软件称为“编译程序”。每一种高级语言都有与它对应的编译程序,C语言也不例外,其编译程序的功能如图6-2所示。

由C语言构成的指令序列称C源程序,C源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。在DOS状态下,输入此文件名字(不必输入后缀.EXE),该文件就可以执行。

例6.1.1 以下叙述中错误的是()。[2006年4月选择第44题]

A.C语言源程序经编译后生成后缀为.obj的目标程序

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

答案:D

第7章顺序结构程序设计

本章主要考查输入输出和顺序结构设计方法。顺序结构程序设计属于最基本的程序设计方法之一,掌握这一部分对后续学习及程序阅读作用极大。通过对历年试卷内容的分析,本章考核内容约占4%,属于一般考查对象,由下面的命题走势图7-1可知,本节部分所涉及的直接考题有下降的趋势,但是由于这部分内容属于基础考点,别的试题或多或少与之相关,所以考生务必熟练掌握这一部分内容。

7.1 基本概念

7.1.1 考点1:顺序程序概述

顺序结构是按照语句的排列顺序依次执行。流程图如图7-2所示,程序执行完语句组1后再接着按照顺序执行语句组2。

有一个比较经典的例子来表达顺序结构的思想:交换两整数的值。

例如,a=0,b=99,交换a,b的值,达到最后的结果a=99,b=0。在实现这个算法的时候,定义一个中间变量c,

用它来临时保存a的值,再把b的值赋给a,这个时候a就得到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;

}

则执行结果就变成a=b=99,不能达到预期目的。因为程序顺序执行,所以先把b的值赋给a,a变成99,然后再把a赋给c,c也变成99,这时再把c赋给b,b也变成99,没有达到我们程序的目的。

按照上面的程序,顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构。例如,计算长方形的面积,其程序的语句顺序就是输入长方形的长length和宽wide,计算“S = length*wide”,输出它的面积S。而大多数情况下,顺序结构都是作为程序的一部分,与其他结构一起构成一个复杂的程序,例如,分支结构中的块体、循环结构中的循环体等。

例7.1.1 下列描述正确的是()。

A.顺序结构不能单独构成一个完整的程序

B.顺序结构、循环结构、选择结构是三种最基本的结构

C.程序从文件最开始执行,不一定是从main函数开始执行

D.程序按照语句的书写顺序执行

答案:B

第8章选择结构程序设计

本章主要考查选择结构设计方法,其中包括关系运算符、逻辑运算符、条件运算符以及最常见的if条件判断语句。选择结构程序属于3种基本的程序设计方法之一。通过对历年试卷内容的分析,本章考核内容约占4%,属于一般考查内容,由下面的命题走势图8-1可知,本章部分所涉及的直接考题有上升的趋势。

8.1 基本概念

8.1.1 考点1:关系运算和逻辑运算

选择结构是按照条件的真假选择执行某段代码。流程图如图8-2所示,如果条件1为真,则执行语句组1;否则执行语句组2。

条件1中的真(T)和假(F)就是C语言中的两种逻辑值,真用非0代表,假用0代表。关系运算和逻辑运算的结果只有真(非0)或者假(0)。

关系运算符包括==(等于)、!=(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)。

优先级的关系是==和!=比其余的低,相同的优先级运算规则是从左到右。

例如,1==1(真),1!=1(假),1<2(真),2<=2(真),2>2(假),2>=2(真)。

若a=5,b=3,c=1,则

a>b>c的计算过程是:

先计算a>b,结果为真,值为1;

再计算1>c,结果为假,值为0,所以a>b>c表达式为假。

f=b>c!=a的计算过程是:

先计算b>c,结果为1;

再计算1!=a结果为1;

最后将1赋值给f。

逻辑运算符包括!(逻辑非)、&&(逻辑与)、||(逻辑或),!的优先级最高,其次是&&和||。

例如:

若x=10,则!x的结果为假,值为0;

若a=3,b=0,则a&&b的结果为假,值为0;5&&0||8的值为1。

(1)所有的运算符的优先级的关系是!>算术运算符>关系运算符>&&>||>赋值运算符,对于有疑问的,请一律用括号来明确。

(2)在逻辑表达式的求解中,并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算才能求出表达式解的时候,才去执行下一个运算符。某些情况会发生短路现象,一般是在&&和||的运算中产生。

例如:

当a=5,b=3,c=2,d=1,x=1,y=1时,表达式(x=a

又如,a++||b++,因为a++已经为真,所以这个时候整个表达式的值已经可以确定为真,不用去计算b++的值,这个时候b的值没有变化。

(3)数学表达式00&&x<10。这是数学语言和程序设计语言中表达相同意思的一个区别。

(4)关于实数相等的比较。在计算机中,通常存放在内存中的实数是有误差的,因此不能精确相等,将导致x==y的值总是假。可以通过abs(x-y)<0.0001这种方式来比较,精度0.0001可以由程序员控制。

例8.1.1 如果int a=2,b=3,c=0,下列描述正确的是()。

A.a>b!=c和a>(b!=c)的执行顺序是一样的 B.!a!=(b!=c)表达式的值为1

C.a||(b=c)执行后b的值为0 D.a&&b>c的结果为假

答案:B

解析:A中>的优先级大于!=,所以执行顺序不一样;C中不用执行b=c,因为a就可以确定这个表达式的值;D中a和b>c都为真,所以整个表达式为真。

第9章循环结构程序设计

本章主要考查循环结构设计方法,其中包括while、do-while、for语句的使用,以及continue和break循环控制语句。循环结构程序属于3种基本的程序设计方法之一,其特点是在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。通过对历年试卷内容的分析,本章考核内容约占9%,属于重点考查内容,由下面的命题走势图9-1可知,本节部分所涉及的考题有上升的趋势。

9.1 while和do-while循环结构

9.1.1 考点1:while语句

一般形式为:

while(表达式)

{

语句组

}

其中,表达式是循环条件,语句组为循环体,当语句组只有一条语句时,可以省略花括号。其执行过程如下。

(1)计算表达式的值,如果为假(或者0),执行3;否则执行2

(2)执行语句组,然后执行1

(3)跳出while循环

例如:

while(getchar()!='\n'); //当输入回车的时候退出。

int i = 10;

while(i)

{

printf("%d",i);

i --;

}//输出从10到1的数据,在0的时候退出。

对while语句的几点说明。

(1)在while循环体内也允许空语句,如第一个例子中,并且当循环条件一开始就为假(或为0)的时候,循环体不执行一次,直接跳出循环。

(2)可以有多层while循环嵌套。

(3)语句组是多条语句的时候,必须用“{“和”}”括起来。

(4)while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0),即可继续循环,应该避免非人为的死循环。

例9.1.1 有以下程序

main()

{

int y=10;

while(y--);

printf("y=%d\n",y);

}

程序执行后的输出结果是()。[2006年4月选择第30题]

A.y=0 B.y=-1

C.y=1 D.while构成无限循环

答案:B

解析:注意这个while语句循环体是空语句,一直执行到y--为0,只有当y=0的时候执行y--才为0,这个时候退出循环,但是y已经是-1。此类题目,可以列出每次循环的循环变量的值分析,选择更形象。

第10章函数

本章主要考查函数的定义与调用、函数中的数据传递和变量的类型等,包括函数的基本概念、函数的返回值、参数传递中的传值方法与传地址方法、函数递归调用的分析、静态存储变量的特点和全局变量与局部变量的作用域等。通过对历年试卷内容的分析,本章考核内容约占卷面分数的10%,属于重点考查内容。由命题走势图10-1可知,本节部分所涉及考题分值逐渐上升,目前已呈平稳趋势。

10.1 函数基本概念

10.1.1 考点1:函数的概念

函数是C语言的基本组成部分,用来完成子程序的功能。一个完整的C程序包括一个main()函数(主函数)和若干个其他函数,C程序从main()函数开始执行,当main()函数执行完毕时,整个程序就结束了。

在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但main()函数不能被调用。

根据用户使用情况,函数可以分为库函数和自定义函数两种。根据函数的形式,函数可以分为无参函数和有参函数。

例10.1.1 以下关于函数的叙述中正确的是()。[2005年9月选择第14题]

A.每个函数都可以被其他函数调用(包括main()函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

解析:main()函数不能被调用,A选项错误;C程序的执行必须从main()函数开始,C选项错误;函数不能嵌套定义,D选项错误。

答案:B

例10.1.2 以下叙述中错误的是()。[2006年4月选择第46题]

A.C程序必须由一个或一个以上的函数组成

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过return语句返回

D.函数形参的值也可以传回给对应的实参

答案:D

第11章指针与数组

本章主要考查指针的基础知识、数组的基础知识和字符串的应用,包括指针的基本应用、一维数组的基本应用、二维数组的基本应用、指针和数组的关系、指针与数组在函数参数传递中的应用、字符数组的应用和字符串的应用等。通过对历年试卷内容的分析,本章考核内容约占卷面分数的19%,属于重点考查内容,由命题走势图11-1可知,本章部分所涉及考题分值逐渐下降,目前已呈平稳趋势。

11.1 指针基础知识

指针是C语言的精华之一,合理地运用指针可以有效地利用内存,提高程序效率,完成复杂的数据结构。

11.1.1 考点1:地址、指针和指针变量

计算机内存是一个连续编码的单元,每个存储单元都有一个固定的编号,这个编号就是地址。在C程序中定义变量,编译系统都会给这个变量分配相应的存储单元,因此C语言中的变量就代表了内存中的一些存储单元,该单元的固定编号就是变量的地址,也称为指针。

在C语言中存在直接存取和间接存取两种访问内存数据的方法。前者利用变量名隐式地访问内存:首先定义变量,然后由编译系统完成从变量名到内存地址的映射工作,用户通过变量名访问内存空间,变量地址对用户完全透明。后者则通过指针显式地访问内存:用户直接使用变量的地址,或者将变量的地址值储存于特殊的变量中,然后通过此特殊的变量获取地址值访问内存。这个专门存放地址的特殊的变量就是指针变量,又称为指向某变量的指针。

为了更好地使用指针变量,C语言提供了获取变量地址和通过地址访问变量的运算符“&”和“*”。

(1)取地址运算符“&”,使用格式为:&变量名,如&a表示变量a在内存中的地址。本运算符实现从变量到地址的转化。

(2)指针运算符“*”,使用格式为:*指针变量名,如*p表示指针变量p所指向的变量的值。本运算符实现从地址到变量的转化。

第12章编译预处理与动态存储分配

本章主要考查编译预处理与动态存储分配。通过对历年试卷内容的分析,本章考核内容约占3%,属于非重点考查内容。由命题走势图12-1可知,本章部分所涉及考题分值基本上是稳定的。

12.1 编译预处理

12.1.1 考点1:预处理概述

在C语言程序中,会出现以“#”号开头的预处理命令。如包含命令#include,宏定义命令#define等。在源程序

计算机c语言二级考试复习资料

第一章C语言概述 一、选择题: 1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束 2、在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 4、一个C 语言程序是由( B )。 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题: 1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。 4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。 5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。 6、C 语言的标识符只能由字母、数字和下划线三种字符组成。 第三章数据类型、运算符和表达式

计算机二级考试C语言练习题及答案

一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

计算机二级C语言测试题

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和 */ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

全国计算机二级C语言操作题题库

1.程序Cmody021.c输出如下所示图形: * *** ***** ******* ********* #include void main() { int i,j;for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++)printf(" "); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 2.程序Cmody032.c的功能是:输出201-300之间的所有素数,统计总个数。#include #include void main() { int num; printf("\n"); num=fun(); printf("\nThe total of prime is %d",num); getch(); } int fun() { int m,i,k,n=0; for(m=201;m<=300;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) /**/if(m/i==0)/**/ break; /**/if(i==k)/**/ { printf("%-4d",m); n++;

if(n%10==0)printf("\n"); } } return n; } 3. 程序Cmody041.c,其功能是统计输入字符串中小写英文字母的个数。如输入:abcdEFGHIJK123 输出:4 #include #include main() { char str1[128]; /**/int i,len,sum=0;/**/ gets(str1); len=strlen(str1); for(i=0;i='a'&&str1[i]<='z')/**/ sum++; } printf("%d\n",sum); getch(); } 4.程序Cmody051.c,其功能是统计输入字符串中大写英文字母的个数。如输入:abcDEFGH123 输出:5 #include #include main() { /**/char str1[128]/**/ int i,len,sum=0; printf("Please input a string:\n"); scanf("%s",str1); len=strlen(str1); for(i=0;i='A'&&str1[i]<='Z') /**/sum++;/**/

计算机二级C语言测试题及答案解析(一)

2016年计算机二级C语言测试题及答案解析(一)1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C 开始执行。 A、程序中第一条可执行语句 B、程序中第一个函数 C、程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是(C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A、C程序的工作过程是编辑、编译、连接、运行 B、C语言不区分大小写。 C、C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。

B、a[i] C、a2_i D、int t 5~8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成 数字不能作为标识符的开头 关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C )。 A、%x B、a+b C、a123

选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C 中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C 。 A、2.5 B、2 C、1 D、3 %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%

计算机二级C语言考试内容

计算机二级 公共基础知识 基本要求 1.掌握算法的基本概念。 2.掌握基本数据结构及其操作。 3.掌握基本排序和查找算法。 4.掌握逐步求精的结构化程序设计方法。 5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6.掌握数据库的基本知识,了解关系数据库的设计。 考试内容 一、基本数据结构与算法 1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5.线性单链表、双向链表与循环链表的结构及其基本运算。 6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。

7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、程序设计基础 1.程序设计方法与风格 2.结构化程序设计。 3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、软件工程基础 1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3.结构化设计方法,总体设计与详细设计。 4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5.程序的调试,静态调试与动态调试。 四、数据库设计基础 1.数据库的基本概念:数据库,数据库管理系统,数据库系统。 2.数据模型,实体联系模型及E―R图,从E―R图导出关系数据模型。 3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。

计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 或35 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 :m联系 :n联系 :1联系 :l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

全国计算机等级考试二级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语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

全国计算机二级考试C语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构占总分1% 2、数据类型及其运算占总分4% 3、选择结构程序设计占比分的3% 4、循环结构占比分的5% 5、数组的定义和引用占比分的5% 6、函数占比分的5% 7、编译预处理占比分1% 8、指针占比分的5% 9、结构体占比分的3% 10、位运算占比分的2% 11、文件操作占比分的2% 考试方式 上机考试,时长120分钟 单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题) 第一部分 C语言知识复习资料 第一章C语言基本知识(90分) 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。 【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

计算机二级c语言题库

一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 (D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机二级c语言真题三[1]

计算机二级 c 语言真题三 一、选择题((1) ~(10) 每小题2 分,(11)-(50) 每小题1 分,共60 分) 下列各题A)、B)、c) 、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 算法的时间复杂度是指_______。 A)执行算法程序所需要的时间 B)算法程序的长度 C)算法执行过程中所需要的基本运算次数 D)算法程序中的指令条数 答案:C 评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 (2) 下列叙述中正确的是________。 A)线性表是线性结构B) 栈与队列是非线性结构 C)线性链表是非线性结构D) 二叉树是线性结构 答案:A

评析:一般将数据结构分为两大类型:线性结构与非线性结构。 线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 (3) 下面关于完全二叉树的叙述中,错误的是_________。 A)除了最后一层外,每一层上的结点数均达到最大值 B)可能缺少若干个左右叶子结点 C)完全二叉树一般不是满二叉树 D)具有结点的完全二叉树的深度为[log2n]+1 答案:B 评析:满二叉树指除最后一层外每一层上所有结点都有两个子结 点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到 最大值,在最后一层上只缺少右边的若干子结点( 叶子结点) 的二叉树。 (4) 结构化程序设计主要强调的是_________。 A)程序的规模B) 程序的易读性 c) 程序的执行效率D) 程序的可移植性 答案:B 评析:结构化程序设计主要强调的是结构化程序清晰易读,可理 解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的 正确性。

计算机二级C语言真题及答案

2014 年 3 月计算机二级 C 语言真题及答案 一、选择题 二、( 1)下列关于栈叙述正确的是 三、A) 栈顶元素最先能被删除 四、B)栈顶元素最后才能被删除 五、C) 栈底元素永远不能被删除? 六、D) 以上三种说法都不对 七、( 2)下列叙述中正确的是 八、A) 有一个以上根结点的数据结构不一定是非线性结构 九、B) 只有一个根结点的数据结构不一定是线性结构 十、C) 循环链表是非线性结构 十一、D)双向链表是非线性结构 十二、(3) 某二叉树共有7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层) 十三、A)3? 十四、B)4? 十五、C)6? 十六、D)7 十七、(4) 在软件开发中,需求分析阶段产生的主要文档是 十八、A)软件集成测试计划? 十九、B)软件详细设计说明书二十、C)用户手册?

二十一、D)软件需求规格说明书 二十二、(5) 结构化程序所要求的基本结构不包括 二十三、A)顺序结构? 二十四、B)GOTC跳转 二十五、C)选择(分支)结构? 二十六、D)重复(循环)结构 二十七、(6) 下面描述中错误的是 二十八、A)系统总体结构图支持软件系统的详细设计 二十九、B)软件设计是将软件需求转换为软件表示的过程三十、C)数据结构与数据库设计是软件设计的任务之一 三十一、D)PAD图是软件详细设计的表示工具 三十二、(7) 负责数据库中查询操作的数据库语言是 三十三、A) 数据定义语言 三十四、B)数据管理语言 三十五、C)数据操纵语言 三十六、D)数据控制语言 三十七、 (8) 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师 和课程间的联系是 三十八、A)1:1 联系? 三十九、B)1:m 联系 四十、C)m:1 联系? 四十一、D)m:n 联系 四十二、(9)有三个关系R、S和T如下: 四十三、则由关系R和S得到关系T的操作是四十四、A) 自然连接?

全国计算机等级考试二级C语言100题

1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; }

2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案:

void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; }

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

机试全国计算机二级C语言程序题 题库(1---50)每年都一样

全国计算机二级C语言程序题题库(必考题库1--50) 建议下载到手机WPS打开 第一套 1. 程序填空程序通过定义学生结构体数组,存 储了若干个学生的学号、姓名和三门课的成 绩。函数fun的功能是将存放学生数据的结 构体数组,按照姓名的字典序(从小到大排 序)。 第一处struct student t; 第二处for(i=0;i0) 2 程序修改 /**found**/ q=p+i; /**found**/ while(q>p) 3程序设计 int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; for(i=0;i=1&&a[i].s<=h) b[j++]=a[i]; return j; } 第二套 1. 程序填空 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处free(q); 第二处q=p->next; 第三处q=q->next; 2. 程序修改 /**found**/ p=j; /**found**/ p=i; 3. 程序设计 void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;idata==ch)return n; 第三处k=fun(head,ch); 2. 程序修改 /**found**/ for(i=0,t=0;p[i];i++) /**found**/ c[t]=?\0?; 3. 程序设计 void fun(char *ss) { int i; for(i=1;i=?a?&&ss[i]<=?z?) ss[i]-=32; } } 第五套 1. 程序填空 给定程序中,函数fun的功能是:计算下 式前n项的和作为函数值返回。例如:当形参n 的值为10 的时,函数返回:9.6125588。 第一处s=0; 第二处for(i=1;i<=n;i++) 第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t); 2. 程序修改 /**found**/ for(i=0;str[i];i++) /**found**/ if(substr[k+1]==?\0?) 3. 程序设计 double fun(double eps) { double s=1,t=1./3; int n=1; while(t>=eps) {s+=t;n++;t=t*n/(2.0*n+1) ;} return(s*2.0); } 第六套 1. 程序填空 给定程序中,函数fun的功能是:将形参 s所指定字符串中所有的字母字符顺序前移,其他 字母顺序后移,处理后字符串的首地址作为函数 值返回。 第一处t[j]=s[i];j++; 第二处for(i=0;iscore[i]+=1; 第三处return a; 2. 程序修改 /**found**/ char *fun(char (*sq)[M]) /**found**/ return sp; 3. 程序设计 #include void fun(int a,int b,long *c) { *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10; } 第八套 1. 程序填空 函数fun的功能是:将形参观者工所指数 组中的前半部分元素中的值和后半部分元素中的 值对换。形参n中存放数组中数据的个数,若n 为奇书,则中间元素不动。 第一处p=(n%2==0)?n/2:n/2+1; 第二处a[i]=a[p+i]; 第三处a[p+i]=t; 2. 程序修改 /**found**/ float k; /**found**/ if(*a<*c) 3. 程序设计 int fun(STREC *a,STREC *b) { int i,max=a[0].s,n=0; for(i=1;i

相关主题
文本预览
相关文档 最新文档