上篇 公共基础知识 1
第1章 数据结构与算法 1
第一部分 笔试部分 1
1.1 算法 2
1.1.1 算法的基本概念 2
1.1.2 算法复杂度 2
1.2 数据结构的基本概念 3
1.2.1 什么是数据结构 3
1.2.3 线性结构与非线性结构 4
1.2.2 数据结构的图形表示 4
1.3 线性表及其顺序存储结构 5
1.3.1 线性表的基本概念 5
1.3.2 线性表的顺序存储结构 5
1.3.3 顺序表的插入运算 6
1.3.4 顺序表的删除运算 6
1.4 栈和队列 7
1.4.1 栈及其基本运算 7
1.4.2 队列及其基本操作 8
1.5.1 线性链表的基本概念 9
1.5 线性链表 9
1.5.2 线性链表的基本运算 11
1.5.3 循环链表及其基本运算 12
1.6 树与二叉树 12
1.6.1 树的基本概念 12
1.6.2 二叉树及其基本性质 12
1.6.3 二叉树的存储结构 13
1.6.4 二叉树的遍历 13
1.7 查找技术 14
1.8 排序技术 15
1.8.1 交换类排序法 15
1.7.2 二分法查找 15
1.7.1 顺序查找 15
1.8.2 插入类排序 16
1.8.3 选择类排序 16
第2章 程序设计基础 21
2.1 程序设计方法与风格 21
2.2 结构化程序设计 22
2.2.1 结构化程序设计的原则 22
2.2.2 结构化程序的基本结构与特点 23
2.3 面向对象的程序设计 24
2.2.3 结构化程序设计原则和方法的应用 24
3.1 软件工程基本概念 27
3.1.1 软件定义与软件特点 27
3.1.2 软件危机与软件工程 27
第3章 软件工程基础 27
3.1.3 软件工程过程与软件生命周期 28
3.1.4 软件工程的目标与原则 28
3.1.5 软件开发工具与软件开发环境 29
3.2.1 需求分析与需求分析方法 30
3.2.2 结构化分析方法 30
3.2 结构化分析方法 30
3.2.3 软件需求规格说明书 32
3.3 结构化设计方法 33
3.3.1 软件设计的基本概念 33
3.3.2 概要设计 34
3.3.3 详细设计 36
3.4 软件测试 37
3.4.1 软件测试的目的 37
3.4.2 软件测试的准则 38
3.4.3 软件测试技术与方法综述 38
3.4.4 软件测试的实施 40
3.5.1 基本概念 42
3.5.2 软件调试方法 42
3.5 程序的调试 42
第4章 数据库设计基础 46
4.1 数据库系统的基本概念 46
4.1.1 数据、数据库、数据库管理系统 46
4.1.2 数据库系统的发展 47
4.1.3 数据库系统的基本特点 47
4.1.4 数据库系统的内部结构体系 48
4.2.2 E-R模型 49
4.2 数据模型 49
4.2.1 数据模型的基本概念 49
4.2.3 层次模型 51
4.2.4 网状模型 51
4.2.5 关系模型 51
4.3 关系代数 53
4.4 数据库设计与管理 55
4.4.1 数据库设计概述 55
4.4.3 数据库概念设计 56
4.4.2 数据库设计的需求分析 56
4.4.4 数据库的逻辑设计 57
4.4.5 数据库的物理设计 57
下篇 C语言程序设计 61
第1章 程序设计基本概念 61
1.1 程序和程序设计 61
1.1.1 C程序 61
1.1.2 程序设计 62
1.2 算法 62
1.3.1 结构化程序 63
1.3 结构化程序设计和模块化结构 63
1.3.2 模块化结构 64
第2章 C程序设计的初步知识 66
2.1 简单C语言程序的构成和格式 66
2.2 常量、变量和标识符 67
2.2.1 标识符 67
2.2.2 常量 68
2.2.3 用定义一个符号名的方法来代表一个常量 68
2.2.4 变量 68
2.3.3 整型数据的分类 69
2.3.2 整型变量 69
2.3.1 整型常量 69
2.3 整型数据 69
2.3.4 整数在内存中的存储形式 70
2.4 实型数据 71
2.4.1 实型常量 71
2.4.2 实型变量 71
2.5 算术表达式 72
2.5.1 基本的算术运算符 72
2.5.2 运算符的优先级、结合性和算术表达式 72
2.6.1 赋值运算符和赋值表达式 73
2.5.3 强制类型转换表达式 73
2.6 赋值表达式 73
2.6.2 复合的赋值表达式 74
2.6.3 赋值运算中的类型转换 74
2.7 自加、自减运算符和逗号运算符 75
2.7.1 自加运算符(++)和自减运算符(--) 75
2.7.2 逗号运算符和逗号表达式 75
3.2.1 printf函数的一般调用形式 78
3.2 数据输出 78
3.1 赋值语句 78
第3章 顺序结构 78
3.2.2 printf函数中常用的格式说明 79
3.2.3 调用printf函数时的注意事项 80
3.3 数据输入 81
3.3.1 scanf函数的一般调用形式 81
3.3.2 scanf函数中常用的格式说明 81
3.3.3 通过scanf函数从键盘输入数据 82
3.4.1 复合语句 83
3.4.2 空语句 83
3.4 复合语句和空语句 83
第4章 选择结构 87
4.1 关系运算和逻辑运算 87
4.1.1 C语言中的逻辑值 87
4.1.2 关系运算符和关系表达式 87
4.1.3 逻辑运算符和逻辑表达式 88
4.2 if语句和用if语句构成的选择结构 89
4.2.1 if语句 89
4.2.2 嵌套的if语句 89
4.3.4 条件运算符的优先级 91
4.3.3 条件表达式的运算功能 91
4.3 条件表达式构成的选择结构 91
4.3.1 条件运算符 91
4.3.2 由条件运算符构成的条件表达式 91
4.4 switch语句以及用switch语句和break语句构成的选择结构 92
4.4.1 switch语句 92
4.4.2 switch语句的执行过程 92
4.4.3 在switch语句体中使用break语句 92
4.5.1 语句标号 94
4.5.2 goto语句 94
4.5 语句标号和goto语句 94
第5章 循环结构 99
5.1 while语句和用while语句构成的循环结构 99
5.1.1 while循环的一般形式 99
5.1.2 while循环的执行过程 99
5.2 do-while语句和用do-while语句构成的循环结构 100
5.2.1 do-while语句构成的循环结构 100
5.2.2 do-while循环的执行过程 101
5.3.2 for循环的执行过程 102
5.3.3 有关for语句的说明 102
5.3 for语句和用for语句构成的循环结构 102
5.3.1 for语句构成的循环结构 102
5.4 循环结构的嵌套 103
5.5 break和continue语句在循环体中的作用 104
5.5.1 break语句 104
5.5.2 continue语句 105
6.1.1 字符常量 110
6.1.2 转义字符常量 110
6.1 字符型常量 110
第6章 字符型数据 110
6.1.3 字符串常量 111
6.1.4 可对字符量进行的运算 111
6.2 字符变量 112
6.3 字符的输入和输出 112
6.3.1 调用printf和scanf函数输出和输入字符 112
6.3.2 调用putchar和getchar函数输出和输入字符 113
第7章 函数 118
7.1 库函数 118
7.2.1 函数定义的语法 119
7.2 函数的定义和返回值 119
7.2.2 函数的返回值 120
7.3 函数的调用 121
7.3.1 函数的两种调用方式 121
7.3.2 函数调用时的语法要求 121
7.4 函数的说明 122
7.4.1 函数说明的形式 122
7.4.2 函数说明的位置 122
7.5 调用函数和被调用函数之间的数据传递 123
8.2 指针变量的定义和指针变量的基类型 129
第8章 指针 129
8.1 变量的地址和指针 129
8.3 给指针变量赋值 130
8.3.1 给指针变量赋地址值 130
8.3.2 给指针变量赋“空”值 130
8.4 对指针变量的操作 131
8.4.1 通过指针来引用一个存储单元 131
8.4.2 移动指针 132
8.5 函数之间地址值的传递 133
8.5.1 形参为指针变量时,实参和形参之间的数据传递 133
8.4.3 指针比较 133
8.5.2 通过传送地址值,在被调用函数中直接改变调用函数中的变量的值 134
8.5.3 函数返回地址值 134
第9章 数组 140
9.1 一维数组的定义和一维数组元素的引用 140
9.1.1 一维数组的定义 140
9.1.2 一维数组元素的引用 141
9.1.3 一维数组的初始化 141
9.1.4 通过赋初值定义数组的大小 141
9.2.2 通过数组和首地址引用数组元素 142
9.2 一维数组和指针 142
9.2.1 一维数组和数组元素的地址 142
9.2.3 通过指针来引用一维数组元素 143
9.2.4 用带下标的指针变量引用一维数组元素 143
9.3 函数之间对一维数组和数组元素的引用 143
9.3.1 数组元素作实参 143
9.3.2 数组名作实参 144
9.3.3 数组元素地址作为实参 144
9.3.4 函数的指针形参和函数体中数组的区别 144
9.4.2 二维数组元素的引用 146
9.4 二维数组的定义和二维数组元素的引用 146
9.4.1 二维数组的定义 146
9.4.3 二维数组的初始化 147
9.4.4 通过赋初值定义二维数组的大小 147
9.5 二维数组和指针 148
9.5.1 二维数组和数组元素的地址 148
9.5.2 通过地址来引用二维数组元素 149
9.5.3 通过建立一个指针数组来引用二维数组元素 149
9.5.4 通过建立一个行指针来引用二维数组元素 150
9.6.2 指针数组作为实参时,实参和形参之间的数据传递 151
9.6.1 二维数组名作为实参时,实参和形参之间的数据传递 151
9.6 二维数组名和指针数组作为实参 151
第10章 字符串 159
10.1 用一个一维字符数组来存放字符串 159
10.1.1 通过赋初值的方式给一维字符数组赋字符串 159
10.1.2 在C程序执行过程中给一维字符数组赋字符串 160
10.2 使指针指向一个字符串 161
10.2.1 通过赋初值的方式使指针指向一个字符串 161
10.2.2 通过赋值运算使指针指向一个字符串 161
10.3.1 输入和输出字符串时的必要条件 162
10.3.2 用格式说明符%s进行整串输入和输出 162
10.2.3 用字符数组作为字符串和用指针指向的一个字符串之间的区别 162
10.3 字符串的输入和输出 162
10.3.3 调用gets、puts函数,从终端进行字符串行的输入和输出 163
10.4 字符串数组 164
10.5 用于字符串处理的函数 165
第11章 对函数的进一步讨论 172
11.1 传给main函数的参数 172
11.2 通过实参向函数传递函数名或指向函数的指针变量 174
11.3 函数的递归调用 174
12.1.1 用户标识符的作用域 180
12.1.2 局部变量、全局变量和存储分类 180
第12章 C语言中用户标识符的作用域和存储类 180
12.1 局部变量、全局变量和存储分类 180
12.2 局部变量及其作用域和生存期 181
12.2.1 auto变量 181
12.2.2 register变量 181
12.2.3 静态存储类的局部变量 181
12.3 全局变量及其作用域和生存期 182
12.3.1 全局变量的作用域和生存期 182
12.3.4 静态全局变量 183
12.3.3 在不同编译单位内用extern说明符来扩展全局变量的作用域 183
12.3.2 在同一编译单位内用extern说明符来扩展全局变量的作用域 183
12.4 函数的存储分类 184
12.4.1 用extern说明函数 184
12.4.2 用static说明函数 184
第13章 编译预处理和动态存储分配 187
13.1 编译预处理 187
13.1.1 宏替换 187
13.1.2 文件包含 189
13.2.1 malloc函数和free函数 190
13.2.2 calloc函数 190
13.2 动态存储分配 190
第14章 结构体、共用体和用户定义类型 194
14.1 用typedef说明一种新类型名 194
14.2 结构体类型 195
14.2.1 结构体类型的说明 195
14.2.2 结构体类型的变量、数组和指针变量的定义 196
14.2.3 给结构体变量、数组赋初值 197
14.2.4 引用结构体变量中的数据 197
14.2.5 函数之间结构体变量的数据传递 199
14.2.6 利用结构体变量构成链表 199
14.3.1 共用体类型的说明和变量定义 203
14.3 共用体 203
14.3.2 共用体变量的引用 204
第15章 位运算 210
15.1 位运算符 210
15.2 位运算符的运算功能 210
第16章 文件 214
16.1 C语言文件的概念 214
16.2 文件指针 215
16.3 打开文件 215
16.4 关闭文件 216
16.5 调用getc(fgetc)和putc(fputc)函数进行输入和输出 217
16.6 判文件结束函数feof 218
16.7 fscanf函数和fprintf函数 218
16.8 fgets函数和fputs函数 219
16.9 fread函数和fwrite函数 220
16.10 文件定位函数 220
16.10.1 fseek函数 221
16.10.2 ftell函数 221
16.10.3 rewind函数 221
上机指导 225
第二部分 上机部分 225
上机例题详解 233
第三部分 模拟考场 255
全真笔试模拟试卷(一) 255
全真笔试模拟试卷(二) 267
全真笔试模拟试卷(三) 278
全真笔试模拟试卷(四) 289
全真笔试模拟试卷(五) 302
上机模拟试卷(一) 315
上机模拟试卷(二) 318
上机模拟试卷(三) 321
上机模拟试卷(四) 324
上机模拟试卷(五) 327
全真笔试模拟试卷参考答案 330
上机模拟试卷参考答案 333
第四部分 历年真题 336
2004年4月全国计算机等级考试二级笔试试卷C语言程序设计 336
2004年9月全国计算机等级考试二级笔试试卷C语言程序设计 352
2005年4月全国计算机等级考试二级笔试试卷C语言程序设计 364
2005年9月全国计算机等级考试二级笔试试卷C语言程序设计 378
历年真题参考答案 392