当前位置:文档之家› 计算机二级C语言教材及考纲详解

计算机二级C语言教材及考纲详解

计算机二级C语言教材及考纲详解
计算机二级C语言教材及考纲详解

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.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。

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

C语言程序设计部分

(一)C语言的结构

1.程序的构成,main函数和其他函数。

2.头文件、数据说明、函数的开始和结束标志。

3.源程序的书写格式。

4.C语言的风格。

(二)数据类型及其运算

1.C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。

2.C运算的种类、运算优先级和结合性。

3.不同类型数据间的转换与运算。

4.C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。

(三)基本语句

1.表达式语句,空语句和复合语句。

2.数据的输入与输出,输入输出函数的调用。

3.复合语句。

4.goto语句和语句标号的使用。

(四)选择结构程序设计

1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。

3.选择结构的嵌套。

(五)循环结构程序设计

1.for循环结构。

2.while和do while循环结构。

3.continue语句和break语句。

4.循环的嵌套。

(六)数组的定义和引用

1.一维数组和多维数组的定义、初始化和引用。

2.字符串与字符数组。

(七)函数

1.库函数的正确调用。

2.函数的定义方法。

3.函数的类型和返回值。

4.形式参数与实在参数,参数值的传递。

5.函数的正确调用,嵌套调用,递归调用。

6.局部变量和全局变量。

7.变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。

8.内部函数与外部函数。

(八)编译预处理

1.宏定义:不带参数的宏定义;带参数的宏定义。

2.“文件包含”处理。

(九)指针

1.指针与指针变量的概念,指针与地址运算符。

2.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以下各类型数据。

3.用指针作函数参数。

4.返回指针值的指针函数。

5.指针数组,指向指针的指针,main函数命令行参数。

(十)结构体(即“结构”)与共用体(即“联合”)

1.结构体和共用体类数据的定义方法和引用方法。

2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。

(十一)位运算

1.位运算符的含义及使用。

2.简单的位运算。

(十二)文件操作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O 系统)不要求。

1.文件类型指针(FILE类型指针)。

2.文件的打开与关闭(fopen,fclose)。

3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数),文件的定位(rewind,fseek函数)。

二、各章节考试要点

第1章程序设计基本概念考点归纳

1.1 C语言的特点

C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特点。下面是C语言的主要特点:

(1)语言简洁、紧凑,并且使用方便、灵活;

(2)运算符丰富;

(3)数据结构丰富;

(4)具有结构化的控制语句;

(5)语法限制不太严格,使程序设计比较自由;

(6)C语言允许用户直接访问物理地址,能进行位(bit)操作,可以直接对硬件进行操作。

1.2 源程序的书写规则

C语言的书写规则。C语言书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。C程序没有行号,每个语句和数据定义的最后必须有一个分号。C语言中分号是语句中不可少的,即使是程序中的最后一个语句也应该包含分号。C语言中的注释可以用″/*″用″*/″结束,注释可以在任何允许插入空格符的地方插入。C语言中注释不允许嵌套,注释可以用西文,也可以用中文。

1.3 C语言的风格

由于C语言对语法限制不太严格,为了保证程序的准确性和可读性,建议在书写程序采用阶梯缩进格式。也就是按如下格式书写C语言程序:

**********;

*****()

{

**********;

********;

{

******;

……

}

*********;

}

概括起来,C语言程序具有如下的风格:

①C语言程序的函数具体模块结构风格,使得程序整体结构清晰、层次清楚,为模块

化程序设计提供了强有力的支持。

②C语言的源程序的扩展名都是.C。

③C语言中的注释格式为:

/*注释内容*/

/与*之间不允许有空格,注释部分允许出现在程序中的任何位置。

④C语言中的所有语句都必须以分号“;”结束。

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

考点归纳

2.1 程序的构成

尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示:

编译预处理

主函数()

函数()

.

.

.

函数()

从上面中可以看出,一个C源程序实际上就是若干函数的集合,这些函数中有一个是程序的主函数,任何C的源程序执行时,都是从主函数开始执行的,其它的函数最终必将被这个主函数所调用。C语言除了主函数规定必须取名main外,其它的函数名可以任取,但是要符合C的标识符取名规则,另外注意不要与保留字重名,最好也不可与C语言中的库函数或其它一些命令如编译预处另命令重名。各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的、独立的。不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。一个完整的一般意义上的函数有一个固定的框架,编写具体的函数时,只需在这个框架中填入相应的内容即可。框架如下:

函数类型函数名(形参)

形参说明

{

内部变量说明;

执行语句部分;

}

2.2 C语言的基本词法

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语言中标识符的长度随系统不同而字,如TURBO C中取前8个字符,8个字符后面的字符会自动取消。

2.4 数据类型

C语言的数据类型可以分为三类:

基本类型构造类型〖〗派生类型

整型int

字符型char

实型(浮点型)float

双精度型double

空类型void 结构体struct

公用(联合)体union

枚举型enum

用户定义类型(使用关键字typedef) 数组类型

指针类型

1.整型常量:C语言中的整型常量有三种形式:十进制整型常量、八进制整型常量和十六进制整型常量。十进制整型常量可以用一串连续的十进制数字来表示;八进制整型常量用数字0开头(注意:不是字母O),后面可以跟一串合法的八进制数字;十六进制整型常量用0x或

0X开头,后面可以跟一串合法的十六进制数字。

整型常量又有短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsinged)之分。

2.整型变量:整型变量也可以分为基本型、短整型、长整型和无符号型四种。分别用int,short int(或short),long int(或long),unsigned int(unsigned short,unsigned long)对它们进行定义。

不同的计算机对上述几种整型数据所占用的内存字节数和数值范围有不同的规定,以IBM-PC微机为例,以上各种数据所分配的存储空间和数值范围见下表:

类型名所占字节数数值范围

int

short[int]

long[int]

unsigned[int]

unsigned short

unsigned long 2

2

4

2

2

4 -32768~+32767

-32768~+32767

-2147483648~+2147483647

0~65535

0~65535

0~4294697295

3.实型常量:C语言中的实型常量有两种表示形式:十进制数形式和指数形式。在用指数形式表示实型数据时,字母E可以用小写e代替,指数部分必须是整数(若为正整数时,可以省略″+″号)。

4.实型变量:C语言中的实型变量分为两种:单精度类型和双精度类型,分别用保留关键字float和double进行定义。在一般系统中,一个float型数据在内存中占4个字节;一个double型数据占8个字节(一个long double型数据占16个字节)。

5.字符常量:C语言的字符常量代表ASCⅡ码字符集里的一个字符,在程序中要单引号括起来。C语言规定字符常量可以作为整数常量来处理(注:这里的整数常量指的是相应字符的ASCⅡ代码,因此字符常量可以参与算术运算)。

在C语言中还有一类特殊形式的字符常量,称为″转义字符″。这类字符常量是以一个反斜杠开头的字符序列,但它们只代表某个特定的ASCⅡ码字符,在程序中使用这种常量时要括在一对单引号中。

6.字符变量:C语言中的字符变量用关键字char来定义,每个字符变量中只能存放一个字符。在一般系统中,一个字符变量在计算机内存中占一个字节。与字符常量一样,字符变量也可以出现在任何允许整型变量参与的运算中。

7.字符串常量:C语言中的字符串常量是由一对双引号括起来的字符序列。注意不要将字符常量和字符串常量混淆。C语言对字符串常量的长度不加限制,C编译程序总是自动地在字符串的结尾加一个转义字符‘\0’,作为字符串常量的结束标志。C语言中没有专门

的字符串变量,如果要把字符串存放在变量中,则要用一个字符型数组来实现。

2.5 运算符的种类、运算优先级、结合性

C语言中的运算符可以归纳为下列5类:算术运算符、关系运算符、赋值运算符、逻辑运算符和条件运算符。

1.算术运算符有+、-、*、/、%。分别表示算术加、减、乘、除和取余运算。

这些运算符需要两个运算对象,称双目运算符。除取余(%)运算符外,这些运算符的运算对象可以是整型,也可以是实型数据。取余运算的运算对象只能是整型。取余运算的结果是两数相除后所得的余数。

″+″和″-″也可以用做单目运算符,但作为单目运算符时必须出现在运算量的左边,运算量可为整型,也可以为实型。

C语言中还提供两个特殊的单目运算符:++和--,这两个运算符既可以放在运算对象之前,又可以放在运算对象之后。

在C语言中,凡是按C语言语法规则用常量、变量、函数调用以及运算符把运算数连接起来的式子都是合法的表达式。凡表达式都有一个值,即运算结果。

算术运算符和一对圆括号组成的算术表达式的运算优先级是:

( ) + - * / % + -

单目

双目

同级

同级

同级

———————————————→

高低

以上所列的运算符中,只有单目运算符″+″和″-″的结合性是从右到左,其余运算符的结合性都是从左到右。

算术表达式的求值规律与数学中的四则运算规律类似,其运算规律和要求为:

①在算术表达式中,可使用多层括号,但左右括号必须配对。运算时从内层圆括号开始,由内向外依次计算表达式的值。

②在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级别由高到低进行,若表达式中运算符的级别相同,则按运算符的结合方向进行。

2.在算术表达式中,C语言提供6种关系运算符:<,>,<=,>=,==,!=。前四种运算符(<,>,<=,>=)的优先级相同,后两种的优先级也相同,并且前四种的优先级高于后两种。

关系运算符属于双目运算符,其结合方向为自左至右。

用关系运算符可以将两个表达式(包括算术表达式、关系表达式、逻辑表达式、赋值表

达式和字符表达式)连接起来构成关系表达式。

关系运算的结果是1或0。在C语言中没有逻辑值,用0代表″假″,用1代表″真″。

3.逻辑运算符C语言提供三种逻辑运算符:&&(逻辑与)、‖(逻辑或)、!(逻辑非)。其中前两种为双目运算符,第三种是单目运算符。

关系运算符中的&&和‖运算符的优先级相同,!运算符的优先级高于前两个。

算术运算符、逻辑运算符和关系运算符三者间的优先级关系为:

! →算术运算符→关系运算符→&& ‖

————————————————→

高低

用逻辑运算符将关系表达式或任意数据类型(除void外)的数据连接起来就构成了逻辑表达式。逻辑表达式的值是0或1。

4.赋值运算符在C语言中,″=″称为赋值运算符。由赋值运算符组成的表达式称为赋值表达式。表达式的形式为:

变量=表达式

赋值符号左边必须是一个代表某一存储单元的的变量名,赋值号的右边必须是C语言中合法的表达式。

赋值运算的功能是先计算右边表达式的值,然后再把此值赋给赋值号左边的变量,确切地说,是把数据放入以该变量为标识的存储单元中去。

5.条件运算符C语言中把″?:″称作条件运算符。条件运算符要求有三个运算对象,它是C语言中唯一的一个三目运算符。由条件运算符构成的条件表达式的一般形式为:表达式1?表达式2:表达式3

当表达式1的值为非零时,取表达式2的值为此条件表达式的值;当表达式1的值为零时,取表达式3的值为此条件表达式的值。

条件运算符具有自右向左的结合性,其优先级别比关系运算符和算术运算符都低。

2.6 不同类型数据间的转换与运算

C语言中不同类型的数据间的转换是由系统自动进行的,其转换规律是:

↑double←float

|↑

|long

|↑

|unsigned

|↑

|int←char,short

图中向左的箭头表示必定的转换,如字符型和short型必定转换为int型,float型在运算时先转为double型(即使是两个float型相加,也都先转换成double型,然后再相加)。向上的箭头表示当运算对象为不同类型时的转换的方向。

2.7 表达式类型和求值规则

1.C语言表达式可以归纳为以下几种类型:赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式。

2.赋值表达式是指用赋值运算符(=)组成的表达式。

3.算术表达式是指用算术运算符和一对圆括号将运算量连接起来的符合C语法的表达式。

4.关系表达式是指用关系运算符将两个表达式连接起来的式子。

5.逻辑表达式是指用逻辑运算符将关系表达式或任意数据类型(void型除外)连接起来的式子。

6.条件表达式是指用条件运算符连接起来的表达式。

7.逗号表达式是指用逗号运算符连接起来的表达式

第3章顺序结构

考点归纳

3.1 表达式语句、函数调用语句和空语句

1.C语言的语句共分五大类:表达式语句、控制语句、函数调用语句、空语句和复合语句。

2.表达式语句的一般形式为

表达式;

最典型的表达式语句是由一个赋值表达式加一个分号构成的赋值语句。

3.控制语句是C语言程序设计中用来构成分支结构和循环结构的语句。此类语句有if 语句,for语句,while语句,do-while语句,switch语句等。

4.函数调用语句的一般形式为

函数名(实参表);

5.空语句的一般形式为

这条语句的含义是什么也不做。凡是在C语句程序中出现语句的地方都可以用一个分号来代替一条语句。

6.复合语句的一般形式为

{语句1;语句2;…;}

复合语句在功能上相当于一条语句。

3.2 数据的输入与输出,输入输出函数的调用

1.C语言本身没有提供输入、输出操作语句。C程序的输入和输出完全依靠调用C语言的标准输入、输出函数来完成。四个常用的输入、输出函数是:

printf函数、scanf函数、putchar函数、getchar函数

2.printf函数是C语言提供的标准输出函数,它的作用是在终端设备(或系统隐含指定的输出设备)上按指定格式进行输出。Printf函数的一般调用形式如下:

printf(格式控制,输出项表)

如果在printf函数调用之后加上″;″,就构成了输出语句。

格式控制参数以字符串的形式描述,由两部分组成:

①普通字符:将被简单地显示;

②格式字符:将引起一个输出参数项的转换和显示,由“%”引出并以一个类型描述符结束的字符串,中间可加一些可选的附加说明项,如下表所示。

附加说明项

附加说明项

说明

-或+ 用于指定是否对齐输出,具有“-”符号表示左对齐,无“-”或有“+”表示右对齐

0 用于指定是否填写0,有此项表示空位用0补充,无此项表示以空格补充

m.n 用于指定输出域宽及精度,m是指域宽,n为精度,当指定n时,隐含的精度为6位

L或h 用于输出长度修正。其中,l对于整型是指long,对实型是double;h只用于整型的格式字符,并修正为short型

格式字符用于指定输出项的数据类型及输入格式,如下表所示。

注意:编译程序只是在检查了printf函数中的格式参数后,才能确定有几个输出项,是什么类型、以什么格式输出。在编程序时,应使输出格式与输出项对应。

格式字符

格式字符

说明

CcD 输出一个字符

d或I 输出带符号的十进制整型数

OoO 以八进制无符号形式输出整型数(不带前导0)

x或X 以十六进制无符号形式输出整型数(不带前导0x或0X),对于x,用abcdef输出十六进制数码;对于X,用ABCDEF输出十六进制数码

UuU 按无符号的八进制形式输出整型数

FfF 以小数的形式输出单精度或双精度数,小数位由精度指定,隐含的精度为6;如指定精度为0,则小数部分(包含小数点)都不输出

e或E 以指数形式输出单精度及双精度数,小数位数由精度指定,隐含的精度为6;如指定精度为0,则小数部分(包含小数点)都不输出

g或G 由系统决定是采用%f不是采用%e格式,以便使输出宽度最小

SsS 输出字符串中的字符,直到遇到″\0″时为止,或输出指定的字符数

PpP 输出变量的内存地址

% 打印一个%

3.scanf函数是C语言提供的标准输入函数,它的作用是在终端设备(或系统隐含指定的输入设备)上输入数据。Scanf函数的一般调用形式是:

scanf(格式控制,输入项表)

如果在scanf函数调用之后加上″;″,就构成了输入语句。

格式控制是用双引号括起来的字符串,称为格式控制串。格式控制串的作用是指定输入时的数据转换格式,即格式转换说明。格式转换说明也是由″%″符号开始,其后是格式描述符。

输入项表中的各输入项用逗号隔开,各输入项只能是合法的地址表达式,即在变量之前加一个地址符号″&″。

在scanf函数中每个格式说明都必须用%开头,以一个″格式字符″结束。

Scanf函数中的格式控制字符与printf函数中的相似,由格式说明项与输入格式符组成。格式说明项如下表所示。

格式说明项

格式说明项说明

% 起始符

* 赋值抑制符,用于按格式说明读入数据,但不送给任何变量

MmM 域宽说明

l或h 长度修正说明符

scanf中的格式字符如下表所示。

格式说明项说明

CcC 输入一个字符

DdD 输入十进制整型数

IiI 输入整型数,整数可以是带前导0的八进制数,带前导0x(或0X)的十六进制数

OoO 以八进制形式输入整型数(可为带前导0,也可不带前导0)

XxX 以十六进制形式输入整型数(可带前导0x或0X,也可不带)

UuU 无符号十进制整数

FfF 以带小数点形式或指数形式输入实型数

EeE 与f的作用相同

SsS 输入字符串

4.putchar函数的作用是把一个字符输出到标准输出设备(通常指显示器或打印机)上。一般调用形式为

putchar(ch) ;

其中ch代表一个字符变量或一个整型变量,ch也可以代表一个字符常量(包括转义字符常量)。

5.getchar函数的作用是标准输入设备(通常指键盘)上读入一个字符。一般调用形式为

getchar();

getchar函数本身没有参数,其函数值就是从输入设备得到的字符。

3.3 复合语句

在C语言中,一对花括号″{}″不仅可以用做函数体的开头和结尾标志,也可以用做复合语句的开头和结尾标志。复合语句的形式为:

语句1;

语句2;

…;

语句n;

3.4 goto语句及语句标号的使用

goto语句称为无条件转向语句,一般形式为如下:

goto语句标号;

goto语句的作用是把程序执行转向语句标号所在的位置,这个语句标号必须与此goto 语句同在一个函数内。

语句标号在C语言中不必加以定义,这一点与变量的使用方法不同。标号可以是任意合法的标识符,当在标识符后面加一个冒号,该标识符就成了一个语句标号。

第4章选择结构

考点归纳

4.1 用if语句实现选择结构

1.在C语言中,if语句有两种形式:

形式1:if(表达式) 语句

形式2:if(表达式) 语句1

else 语句2

2.if语句执行时,首先计算紧跟在if后面一对圆括号中的表达式的值,如果表达式的值为非零(″真″),则执行if后的″语句″,然后去执行if语句后的下一个语句。如果表达式的值为零(″假″),直接执行if语句后的下一个语句。

3.if语句后面的表达式并不限于是关系表达式或逻辑表达式,而可以是任意表达式。If 语句中可以再嵌套if语句。C语言规定,在嵌套的if语句中,else子句总是与前面最近的不带else的if相结合。

4.2 用switch语句实现多分支选择结构

1.switch语句是用来处理多分支选择的一种语句。它的一般形式如下:

switch(表达式)

{case 常量表达式1:语句1

case 常量表达式2:语句2

case 常量表达式n:语句n

default :语句n+1

2.switch语句的执行过程是:首先计算紧跟switch后面的一对圆括号中的表达式的值,当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句体并将流程转移到下一个case继续执行,直至switch语句的结束;若所有的case中的常量表达式的值都没有与表达式值匹配,又存在default,则执行default后面的语句,直至switch语句结束;如果不存在default,则跳过switch语句体,什么也不做。

4.3 选择结构的嵌套

if语句和switch语句都可以嵌套使用,特别要注意,对于构成嵌套的if语句,else子句总是和离它最近的、不带else的if子句相匹配,不能弄混;在一个switch语句中的case 后面又嵌套了一个switch语句,在执行内嵌的switch语句后还要执行一条break语句才跳出外层的switch语句。

第5章循环结构

考点归纳

5.1 for循环结构

1.for循环语句的一般表达式是:

for(表达式1;表达式2;表达式3) 语句

2.C语言语法规定:循环体语句只能包含一条语句,若需多条语句,应使用复合语句。

5.2 while和do while循环结构

1.while语句用来实现″当型″循环结构,它的一般形式如下:

while(表达式)语句

当表达式为非0值时执行while语句中内嵌的语句;当表达式的值为0时,直接跳过while语句后面的语句,执行下一条语句。

2.while语句执行的特点是:先判断表达式,后执行语句。

3.do while用来实现″直到型″循环结构,它的一般形式为:

do语句

while(表达式);

这个语句执行时,先执行一次指定的内嵌的语句,然后判别表达式,当表达式的值为非0时,返回重新执行该语句,如此反复,直到表达式的值为等于0为止,此时循环结束。

4.do while语句执行的特点是:先执行语句,后判断表达式。

5.3 continue语句和break语句

1.break语句有两个用途:①在switch语句中用来使流程跳出switch结构,继续执行switch语句后面的语句;②用在循环体内,迫使所在循环立即终止,即跳出所在循环体,继续执行循环体后面的第一条语句。

2.continue语句结束本次循环,即跳过循环体中尚未执行的语句。在while和do while 语句中,continue语句将使控制直接转向条件测试部分,从而决定是否继续转向循环。在for 循环中,遇到continue语句后,首先计算for语句中表达式3的值,然后再执行条件测试(表达式2),最后根据测试结果来决定是否继续转向for循环。

5.4 循环的嵌套

1.一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。

2.三种循环(while循环、do while循环和for循环)可以互相嵌套。

例题精解

第6章字符型数据

考点归纳

6.1 字符常量

有两种形式:一是用单引号括起来的一个单字符,如′a′,′?′,′=′;二是″转义字符″,即以″\″开头的字符序列。常用的转义字符见下表。

字符形式功能

\n 换行

\t 横向跳格(即跳到下一个输出区)

\v 竖向跳格

\b 退格

\r 回车

\f 走纸换页

\\反斜杠字符″\″

\′单引号(撇号)字符

\″双引号(″)字符

\ddd 1到3位8进制数所代表的字符,如\123,表示8进制数123

\xhh 1到2位16进制数所代表的字符,如\x21,表示16进制数23

在转义字符赋给字符变量时,也需要在其二侧加单引号,如:

char c=′\n′;

字符串常量是用一对双引号括起的字符序列,如″abc\n″。

请区别字符变量和字符串常量。′a′是字符常量,″a″是字符串常量。在内存中,

字符常量占一个字节,而对字符串常量,则在字符串的后面加一个″字符串结束标志″,以便系统据此判断字符串是否结束。用′\0′(即ASCII代码为0的字符,即″空字符″)作为字符串结束的标志。例如,′a′在内存中占两个字节,即:a \0

6.2 字符变量

字符变量用来存放一个字符常量,字符变量用char来定义。如:

char a,b;

a=′0′;b=′k′;

printf(″%c %c \n″,a,b);

将输出两个字符ok。

不能将一个字符串常量赋给一个字符变量,如:

a=″0″;b=″k″;

是错误的。

给字符变量赋值可以采用如下三种方法:

(1)直接赋以字符常量,如char=′A′;

(2)赋以″转义字符″,如:

char c=′\\′;

printf(″%c″,c);

输出一个字符″\″。

(3)赋以一个字符的ASCII代码,如字符′a′的ASCII代码为97,则

char c=97;

printf(″%c″,c);

将输出一个字符″a″。实际上,字符数据在内存中是以整数形式(字符ASCII代码)存放的,例如,字符′a′的ASCII码为97,在内存字节中的存放形式为:

01 10 00 01

在输出时,如果指定输出字符的格式符″%c″输出,则输出字符′a′(在输出时先将ASCII码转换为字符)。如果指定按输出整数的格式″%d″输出(如printf(″%d″,c)),则输出一个整数97。

应记住,字符数据与整型数据二者间是通用的,可以互相赋值和运算,如:

int a=′A′;

char c=97;

print(″%d\n″,c-a);

将输出一个整数32,因为′A′的ASCII码为65。

第7章函数

考点归纳

7.1 库函数的正确调用

1.C语言提供了丰富的库函数,包括常用的数学函数、对字符和字符串处理函数、输入输出处理函数等。在调用库函数时要注意以下几点:

(1)调用C语言标准库函数时必须在源程序中用include命令,include命令的格式是:

#include″头文件名″

include命令必须以#号开头,系统提供的头文件名都以.h作为后缀,头文件名用一对双引号″″或一对尖括号〈〉括起来。

(2)标准库函数的调用形式:

函数名(参数表)

2.在C语言中库函数的调用可以以两种形式出现:出现在表达式中;作为独立的语句完成某种操作。

7.2 函数的定义方法

1.C语言函数的一般形式为:

函数返回值的类型名函数名(类型名形参1,类型名形参2,…)

{

说明部分

语句部分

}

定义的第一行是函数的首部,{}中的是函数体。

2.在老的C语言版本中,函数的首部用以下形式:

函数返回值的类型名函数名(形参1,形参2…)

形参类型说明;

新的ANSI标准C兼容这种形式的函数首部说明。

3.函数名和形参名都是由用户命名的标识符。在同一程序中,函数名必须唯一。形式参数名只要在同一函数中唯一即可,可以与函数中的变量同名。

4.C语言规定不能在一个函数内部再定义函数。

5.若在函数的首部省略了函数返回值的类型名,把函数的首部写成:

函数名(类型名形参1,类型名形参2,…)

则C默认函数返回值的类型为int类型。

6.当没有形参时,函数名后面的一对圆括号不能省略。

7.3 函数的类型和返回值

1.函数的类型由函数定义中的函数返回值的类型名确定,函数的类型可以是任何简单类型,如整型、字符型、指针型、双精度型等,它指出了函数返回值的具体类型。当函数返回的是整型值时,可以省略函数类型名。当函数只完成特定的操作而没有或不需要返回值时,可用类型名void(空类型)。

2.函数返回值就是return语句中表达式的值。当程序执行到return语句时,程序的流程就返回到调用该函数的地方(通常称为退出调用函数),并带回函数值。

7.4 形式参数与实际参数,参数值的传递

1.在函数定义中,出现的参数名称为形参(形式参数),在调用函数时,使用的参数值称为实参(实际参数)。

2.调用函数和被调用函数之间的参数值的传递是″按值″进行的,即数据只能从实参单向传递给形参。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。

7.5 函数的正确调用(嵌套调用,递归调用)

1.调用函数时,函数名必须与被调用的函数名字完全一样。实参的个数与类型和形参的个数与类型一致。

2.C语言规定:函数必须先定义,后调用,也就是被调用函数必须在调用之前加以说明,或被调用函数整个放在调用函数之前。但对返回值类型为int或char类型的函数可以放在调用函数的后面。

3.C语言中函数定义都是互相平行、独立的,C语言不允许嵌套定义函数,但允许嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数。

4.在C程序中,调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。

5.递归调用函数是C语言的特点之一,有时递归调用会使求解的问题变得更简单明了。

7.6 局部变量和全局变量

1.局部变量

在一个函数内部所定义的变量称为局部变量,局部变量只在本函数范围内有效。

注意:

①不同函数中可以使用相同的局部变量名,它们将代表不同的对象,互不干扰;

②一个函数的形参也为局部变量;

③在函数内部,复合语句也可定义变量,这些变量也为局部变量,只在此复合语句中有效。

2.全局变量

在C语言中,程序的编译单位是源程序文件,一个源程序文件中包含一个或多个函数。在函数之外所定义的变量称为外部变量,也称为全局变量。全局变量可以被包含它的源程序文件中的其他函数所共用,作用域为从定义变量的位置开始到源程序文件结束,全局变量可以增加函数之间数据的联系。

注意:当在同一个源程序文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用,局部变量起作用。

7.7 变量的存储类别、作用域及生存期

1.变量的存储类别

在C语言中,有两类存储类别:自动类别及静态类别。

有4个与两种存储类别有关的说明符:auto(自动)、register(寄存器)、static(静态)和extern(外部),这些说明符一般与类型说明一起出现,一般放在类型名的左边,例如:auto long I,j;

也可写成:

long auto I,j;

(1)自动变量:自动变量是C程序中使用最多的一种变量,这种变量的建立和撤消都是在系统中自动进行的。

格式:[auto]数据类型变量名[=初始化表达式],…;

上面的说明格式中,方括号中是可省略的部分,auto为自动类别标识符,若省略auto,系统缺省的存储类别也为自动类别。

注意:函数的形参也为自动类别,在定义时不必加存储类别标识符。

(2)寄存器变量:寄存器变量与自动变量的性质相同,其区别只在于存储的位置不同,寄存器变量存储在CPU的寄存器中,而自动变量存储在内存中的动态存储区,寄存器变量的存取速度要快些。

格式:register数据类型,变量名[=初始化表达式],…;

上面的说明格式中,register为寄存器变量的存储类别标识符。

说明:

①CPU中寄存器的数目是有限的,因此只能把少数的变量说明为寄存器变量;

②寄存器变量是存放在寄存器中的,而不是存放于内存中,所以,寄存器变量无地址;

③寄存器变量的说明应尽量放在靠近要使用的地方,用完后尽快释放,这样可提高使用效率。

(3)静态变量:静态类别变量的存储空间在程序的整个运行期间是固定的。

格式:static数据类型变量名[=初始化表达式],…;

在上面的说明格式中,static为静态变量的存储类别标识符。

静态变量的初始化在编译时进行,定义时可采用常量或表达式进行显式初始化。对于没有初始化的静态变量,自动初始化为0(整型)或0.0(实型)。

注意:静态变量具有可继承性,这与自动变量有所不同。

(4)外部变量:使用extern可使外部变量使用范围扩充到需要使用它的函数。外部变量可作显式的初始化,若不作初始化,系统将自动地初始化为0或0.0。

格式:[extern]数据类型,变量名[=初始化表达式],…;

上面的说明格式中,extern使外部变量的作用范围扩大到其他源程序文件中。

注意:局部变量既可以说明为自动类别,也可以说明为静态类别;全局变量只能说明为静态类别。

2.变量的作用域及生存期

在C语言中,变量必须先说明后使用,在程序中一个已定义的变量的使用范围就是此变量的作用域。经过赋值的变量在程序运行期间能保持其值的时间范围为该变量的生存期。

(1)局部变量的使用域及生存期

①自动变量的使用域及生存期

自动变量的存储单元被分配在内存的动态存储区,每当进入函数体(或复合语句)时,系统自动为自动变量分配存储单元,退出时自动释放这些存储单元。自动变量的作用域为从定义的位置起,到函数体(或复合语句)结束为止。

自动变量在进入到定义它们的函数体(或复合语句)时生成,在退出所在的函数体(或复合语句)时消失,这就是自动变量的生存期。

使用自动变量的优点是使各函数之间造成信息分隔,不同函数中使用同名变量时不会相互影响。

②寄存器变量的使用域及生存期

寄存器变量的使用域及生存期与自动变量相同。

③静态存储类别的局部变量

在函数体(或复合语句)内部,用static说明的变量为静态存储类别的局部变量,这种变量的作用域与自动(或寄存器)变量的作用域相同,但是生存期有所不同。

在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,甚至在退出函数后下次再进入函数时,静态局部变量仍使用原来的存储单元。由于不释放存储单元,所以这些存储单元中的值将会被保留下来。静态局部变量的生存期将一直延长到程序运行结束。

静态局部变量适合于在函数调用之间必须保留局部变量值的独立变量。

(2)全局变量的作用域及生存期

全局变量的作用域为从变量定义的位置开始,到整个源程序文件结束为止。生存期为整个程序的运行期间。

注意:全局变量在整个程序运行期间都占用内存空间。全局变量必须在函数以外定义,因而降低了函数的通用性,影响函数的独立性。使用全局变量时,当全局变量的值意外改变时,会引起副作用,这种错误一般难以查找。

①在同一编译单位内用extern标识符来扩展全局变量的作用域

当全局变量定义后,在引用函数前,应在引用它的函数中用extern对此全局变量进行说明,以便使编辑程序能确定此外部变量已被定义,不必再为它分配存储单元,此时的作用域从extern说明开始,到此函数结束。

注意:全局变量的定义只能出现一次,这时不可使用extern标识符。如果多次引用全局变量,这时必须用extern标识符。

②在不同编译单位内用extern标识符来扩展全局变量的作用域

C语言中的不同函数可以存放在不同的源程序文件中,每个源程序文件可以单独进行编译,进行语法检查,再生成目标文件,最后用系统提供的连接程序把多个目标文件连接成

一个可执行程序。

当程序由多个源程序文件组成时,若每个文件中都要引用同一个全局变量,这时如在每个源程序文件中都定义一个所需的同名全局变量,将在连接时产生重复定义错误。解决的办法是在其中一个源程序文件中定义所有全局变量,而在其他用到全局变量的源程序文件中用extern对这些变量进行说明,以表明它们已在其他编译单元中被定义。

③静态全局变量

当用static标识符说明全局变量时,全局变量为静态全局变量。静态全局变量只能在定义它的源程序文件中使用,不能被其他源程序文件使用。

7.8 内部函数及外部函数

根据函数能否被其他源程序文件所调用,可将函数分为内部函数和外部函数。

1.内部函数

内部函数是指一个函数只能由定义它的源程序文件所调用,内部函数又称为静态函数。

格式:static类型标识符,函数名(类型名形式参数1,类型名形式参数2,…)

上面的定义格式中,static用于说明函数为内部函数。

2.外部函数

外部函数是指可以被其他源程序所调用的函数。

格式:[extern]类型标识符函数名(类型名形式参数1,类型名形式参数2,…)

上面定义格式中,extern表明所定义的函数为外部函数,当extern被省略时,隐含为外部函数。

注意:在要调用此函数的源程序文件中,一般要用extern标识符说明所用的函数为外部函数。

第8章指针

考点归纳

8.1 指针与指针变量的概念,指针与地址运算符

1.在C语言中,指针是指一个变量的地址,通过变量的地址″指向″的位置找到变量的值,这种″指向″变量地址可形象地看作″指针″。用来存放指针的变量称为指针变量,它是一种特殊的变量,它存放的是地址值。

2.定义指针变量的一般形式为:

类型名*指针变量1,*指针变量2,…;

″类型名″称为″基类型″它规定了后面的指针变量中存放的数据类型,″*″号表明后面的″指针变量1″,″指针变量2″等是指针变量,″*″号在定义时不能省略,否则就会变成一般变量的定义了。″指针变量1″,″指针变量2″等称为指针变量名。

3.一个指针变量只能指向同一类型的变量。

4.与指针和指针变量有关的两个运算符:

(1)*:指针运算符(或称″间接访问″运算符)

(2)&:取地址运算符

通过*号可以引用一个存储单元,如有如下定义:

int i=123,*p,k;

则p=&I;或k=*p;或k=*&I;都将变量i中的值赋给k。

*p=10;或*&i=10;都能把整数10赋给变量i。这里,等号左边的表达式*p和*&i都代表变量i的存储单元。

8.2 变量、数组、字符串、函数、结构体的指针以及指向它们的指针变量

1.变量的指针和指向变量的指针变量。

2.数组的指针和指向数组的指针变量。

所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。

C语言规定数组名代表数组的首地址,也就是第一个元素的地址。

3.字符串的指针和指向字符串的指针变量。

我们可以通过定义说明一个指针指向一个字符串。

C语言将字符串隐含处理成一维字符数组,但数组的每个元素没有具体的名字,这一点跟字符数组不一样。要引用字符串中的某个字符,只能通过指针来引用:*(s+0),*(s+1),…,*(s+n)。

4.函数的指针和指向函数的指针变量。

指向函数的指针变量的一般形式为:

数据类型标识符(*指针变量名)();

这里的″数据类型标识符″是指函数返回值的类型。

函数的调用可以通过函数名调用,也可以通过函数指针调用(即用指向函数的指针变量调用)。

指向函数的指针变量表示定义了一个指向函数的指针变量,它不是固定指向哪一个函数,而只是定义了这样的一个类型变量,它专门用来存放函数的入口地址。在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。在一个程序中,一个指针变量可以先后指向不同的函数。

在给函数指针变量赋值时,只需给出函数名而不必给出参数。因为函数指针赋的值仅是函数的入口地址,而不涉及到实参与形参的结合问题。

对指向函数的指针变量,表达式p+n,p++,p--等都无意义。

5.结构体的指针与指向结构体的指针变量

一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。

8.3 用指针做函数参数

函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。

8.4 返回指针值的指针函数

一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址这种带回指针值的函数,一般的定义形式为:

类型标识符*函数名(形参表);

8.5 指针数组、指向指针的指针

1.指针数组指的是一个数组,其元素均为指针类型数据,也就是说,指针数组中的每一个元素都是指针变量。指针数组的定义形式为:

类型标识*数组名[数组长度说明]

指针数组可以使字符串处理更加方便。

2.指向指针的指针是指指向指针数据的指针变量,一个指向指针数据的指针变量的一般形式为:

类型标识* *p;

8.6 main函数的命令参数

指针数组的一个重要应用是作为main函数的形参,一般来说,main函数后的括号中是空的,即没有参数。实际上main可以有参数,如:

main(argc,argv)

其中,argc和argv就是main函数的形参。其他函数形参的值可以通过函数调用语句

的实参中得到,由于main函数是由系统调用的,因而main函数的形参值不能从程序中得到,但可以在操作系统状态下,将实参和命令一起给出,从而使main函数的形参得到值。命令行的一般形式为:

命令名参数1 参数2…参数n

命令名和各参数之间用空格分隔开。

8.7 动态存储分配

在C语言中有一种称为“动态存储分配”的内存空间分配方式:程序在执行期间需要存储空间时,通过“申请”分配指定的内存空间;当闲置不用时,可随时将其释放,由系统另作它用。本节介绍C语言中动态分配系统的主要函数:malloc()、calloc()、free()及realloc(),使用这些函数时,必须在程序开头包含文件stdlib.h。

1.主内存分配函数—malloc()

函数格式:void*malloc(unsigned size);

函数功能:从内存中分配一大小为size字节的块。

参数说明:size为无符号整型,用于指定需要分配的内存空间的字节数。

返回值:新分配内存的地址,如无足够的内存可分配,则返回NULL。

说明:当size为0时,返回NULL。

2.主内存分配函数——calloc()

函数格式:void*malloc(unsigned n,unsigned size);

函数功能:从内存中分配n个同一类型数据项的连续存储空间,每个数据项的大小为size字节。

参数说明:n为无符号整型,用于指定分配的数据项的个数,size为无符号整型,用于指定需要分配的数据项所占内存空间的字节数。

返回值:新分配内存的地址,如无足够的内存可分配,则返回NULL。

3.重新分配内存空间函数——realloc()

函数格式:void*realloc(void *block,unsigned size);

函数功能:将block所指内存区的大小改为size字节的块。

参数说明:block为void类型的指针,指向内存中某个块,size为无符号整型,用于指定需要分配的内存空间的字节数。

返回值:新分配内存的地址,如无足够的内存可分配,则返回NULL。

4.释放内存函数—free()

函数格式:void free(void*block);

函数功能:将calloc()、malloc()及realloc()函数所分配的内存空间释放为自由空间。

参数说明:block为void类型的指针,指向要释放的内存空间。

返回值:无。

第9章数组

考点归纳

9.1 一维数组的定义、初始化和引用

1.一维数组的定义方式为:

类型说明符数组名[常量表达式]

(1)数组名的命名方法与变量名相同,遵循标识符命名规则;

(2)数组是用方括号括起来的常量表达式,不能用圆括号;

(3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1;

(4)常量表达式中可以包括常量和符号常量,不能包括变量。

计算机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. 任何一个问题,它的实现算法是唯一的 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语言真题

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.掌握算法的基本概念。 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语言考点(完整版)

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语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前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语言试题库完整

. . . . 参考 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语言上机考试操作步骤及流程

二级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 ”程序图: 打开

2017年全国计算机等级考试二级C语言真题及答案

2017年全国计算机等级考试二级笔试试卷 C 语言程序设计(附答案) (考试时间90 分钟,满分100 分) 一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题1 分,共70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D)上述三种说法都不对 (2)下列叙述中正确的是 A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对 (3)软件测试的目的是 A)评估软件可靠性 B)发现并改正程序中的错误 C)改正程序中的错误 D)发现程序中的错误 (4)下面描述中,不属于软件危机表现的是 A)软件过程不规范B)软件开发生产率低C)软件质量难以控制C)软件成本不断提高(5)软件生命周期是指 A)软件产品从提出、实现、使用维护到停止使用退役的过程 B)软件从需求分析、设计、实现到测试完成的过程 C)软件的开发过程 D)软件的运行维护过程 (6)面向对象方法中,继承是指 A)一组对象所具有的相似性质 B)一个对象具有另一个对象的性质 C)各对象之间的共同性质 D)类之间共享属性和操作的机制 (7)层次型、网状型和关系型数据库划分原则是 A)记录长度B)文件的大小B)联系的复杂程度D)数据之间的联系方式 (8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 A)一对一B)一对多C)多对多D)多对一 (9)数据库设计中反映用户对数据要求的模式是 A)内模式B)概念模式C)外模式D)设计模式 (10)有三个关系R、S 和T 如下:

计算机二级考试C语言知识点总结

计算机二级考试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 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

2020计算机二级C语言考试真题汇总

模拟卷1 1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: 参考解析: 【参考答案】 【解题思路】 填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。 填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。 填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。 二、程序修改题 2 [简答题] 下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。 例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!

参考解析: 【参考答案】 (1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1)变量k存放数组e的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三. 程序设计题 3 [简答题] 规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。 例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是: “****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 参考解析: 【参考答案】 【考点分析】 本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。 【解题思路】 对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘\0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘\0’。

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

最新福建省计算机等级考试二级C语言考试题库

改错题 #include #include void main() { char s1[100], s2[100]; int i,s_len; printf("Please input string: \n"); gets(s1); s_len = /**/ s1 /**/; for(i=0; i= '0' && s1[i] <= '7') s2[i] = s1[i] + 2; else if(s1[i] == '8'/**/ && /**/s1[i]=='9') s2[i] = s1[i]-8; else s2[i] = s1[i]; } /**/ s2[i+1] /**/ = '\0'; puts(s2); getch(); }

#include #include int prime( int x ) { int i, mark=1 ; double k; /**/ i=1 /**/; k=(int)sqrt((double)x); while (i<=k) { if(x%i==0) {/**/ i=k+1; /**/ break; } i++; } return (mark); } void main() { int a; printf("Input a number: "); scanf("%d",&a); if(/**/ !prime(a) /**/) printf("%d is a prime number.\n", a); else printf("It's not.\n"); getch(); }

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

1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用put )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节get )函数读入字符时,可以从键盘上输入字符所对应的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.多对一

计算机二级C语言上机考试改错题总结

二级C语言上机考试改错题总结 根据本人多年研究全国计算机等级考试二级C语言,发现很多考生对上机考试存在很大的问题。现将本人在教学当中对二级C语言上机考试题库总结的经验和大家分享,希望能对我们考生的考试有所帮助,顺利通过考试!以下是对上机考试改错题的做题方法和总结,改错题的错误主要分为以下几类: 1、if或while语句 若错误行是if或者while语句,则要注意以下点: 1)首先判断是否正确书写if或while关键字; 2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号; 3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符; 4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =); 5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号; 2、for语句 若错误行是for语句,则要注意以下几点:

1)首先判断for有没有书写正确; 2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。 记住是分号(;),不是逗号(,)! 3)再者,分析for中的三个表达式,是否符合题意; 第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。 3、return语句 若错误行为return语句,则要注意以下几点: 1)首先看是不是正确书写return关键字; 2)然后看是不是缺少分号,若是则加上分号即可; 3)再者判断return后的变量或表达式是否正确; 这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符; 4、赋值语句 若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。 5、定义语句 若错误行是定义语句,则要注意:

全国计算机二级C语言考试题型及考试重点

全国计算机二级C语言资格考试分析 ◆考试方式 全国计算机等级考试二级C语言每年上半年3月份与9月份两次考试,报名时间查看通知。 1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 2.上机:90分钟,满分100分 3.上机操作包括: (1)填空。 (2)改错。 (3)编程。 ◆题型分析 二级C考试分笔试和机试两部分,两部分总分均为100分,两部分考试均需60分以上才能合格发放证书。若其中一科(笔试或机试)通过,另一科可在下一次考试中补考,若补考合格发放证书。若二科均在85分以上,在合格证书上将加印“优秀”字样,若二科均在70分以上,在合格证书上将加印“良好”字样。 (一)笔试 笔试内容分两部分。公共基础知识考核内容:30分;C语言基础知识考核内容:70分。题型分析如下: 1、单向选择题40道题,共70分。 分值分布如下: 其中(1)-(10)、(21)-(40)小题,每題2分,(11)-(20)小题,每题1分。 考核内容分布如下: (1)-(10)小题为公共基础知识考核内容,共计20分; (11)-(40)小题为C语言知识考核内容,共计50分。 2、填空题15个空,每空2分,共30分。 考核内容分布如下: (1)-(5)空为公共基础知识考核内容,共计10分; (6)-(15)空为C语言知识考核内容,共计20分。 ◆基本要求 1.熟悉Visual C++ 6.0 集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在Visual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序能力 ◆考试内容 一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。

2020年全国计算机等级考试二级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、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。

计算机二级(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语言2级考试试题

1、有以下程序: 程序运行后的输出结果是( )。 A.1,2,6,24,120, B.1,2,3,4,5, C.1,1,1,1,1, D.1,2,4,6,8, 2、下列叙述中正确的是( )。 A.软件是程序、数据和文档 B.软件是程序和数据 C.软件是算法和数据结构 D.软件是算法和程序 3、语句prinff(”%d\n”,strlen(”\t\”\、、n\"\065\08AB”));的输出结果是( )。A.6 B.7 C.8 D.9 4、函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。 在if语句下划线处应填人的选项是( )。 A.O>s B.* P>*s C.a[p]>a[s] D.p—a>P—s 5、若有语句:int a[3][4],(。P)[4];P=a;,则以下选项中叙述错误的是()。 A.系统将开辟一个名为P的二维数组,“o][o]中的值即为a[o][o]中的值 B.P+1代表a[1][0]的地址 C.P中将存放a数组的首地址 D.P+2代表a数组最后一行的首地址 6、有以下程序:

程序运行后的输出结果是( )。 A.4,5,2,4,1,3, B.4,4,2,2,1,1, C.5,5,3,3,2,2, D.4,4,2,2,1,3 7、若有定义:int a,b,C;以下程序段的输出结果是( )。 a=11;b=3;C=0; pfinff(”%d\n”,c=(a/b,a%B.); A.2 B.0 C.3 D.1 8、若有定义:doublea,b,c;能正确给a,b,c输入数据的语句是( )。A.seanf(”%lf%1f%1P‘&a,&b,&C.; B.scanf(-t%f%f%f¨,&a,&b。&C.: C.scanf(”%If%lf%lf’,a,b,C.; D.scanf(”%lf%lf%lf'’,&a,&b,&C.; 9、有以下程序段: 以下选项中不能正确引用字符串的是( )。 A.3 B.p[3] C.str[2] D.*P 10、在最坏情况下,二分查找法的时间复杂度为( )。 11、有以下程序: 程序运行后的输出结果是( )。 A.2

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