第1章 程序设计基本概念 1
1.1 程序和程序设计 1
1.1.1 C程序概述 1
1.1.2 程序设计 2
1.2 算法 2
1.3 结构化程序设计和模块化结构 3
1.3.1 结构化程序 3
1.3.2 模块化结构 5
1.4 应试加油站 5
1.4.1 考频统计 5
1.4.2 考试重点整理 6
1.4.3 解题技巧 6
1.5 本章习题 7
第2章 C程序设计的初步知识 9
2.1 简单C语言程序的构成和格式 9
2.2 标识符、常量和变量 11
2.2.1 标识符 11
2.2.2 常量 13
2.2.3 变量 14
2.3 整型数据 14
2.3.1 整型常量 14
2.3.2 整型变量 15
2.3.3 整型数据的分类 15
2.3.4 整数在内存中的存储形式 16
2.4 实型数据 16
2.4.1 实型常量 16
2.4.2 实型变量 17
2.5 算术表达式 18
2.5.1 基本的算术运算符 18
2.5.2 运算符的优先级、结合性和算术表达式 19
2.5.3 强制类型转换表达式 20
2.6 赋值表达式 20
2.6.1 赋值运算符和赋值表达式 20
2.6.2 复合的赋值表达式 21
2.6.3 赋值运算中的类型转换 22
2.7 自增、自减运算符和逗号运算符 23
2.7.1 自增运算符(++)和自减运算符(—) 23
2.7.2 逗号运算符和逗号表达式 23
2.8 应试加油站 24
2.8.1 考频统计 24
2.8.2 考试重点整理 25
2.8.3 解题技巧 25
2.9 本章习题 28
第3章 顺序结构 30
3.1 赋值语句 30
3.2 数据输出 30
3.2.1 printf函数的一般调用形式 30
3.2.2 printf函数中常用的格式说明 30
3.2.3 调用printf函数时的考试重点整理 33
3.3 数据输入 35
3.3.1 scanf函数的一般调用格式 35
3.3.2 scanf函数中常用的格式说明 35
3.3.3 通过scanf函数从键盘输入数据 36
3.4 复合语句和空语句 37
3.4.1 复合语句 37
3.4.2 空语句 37
3.5 程序举例 38
3.6 应试加油站 39
3.6.1 考频统计 39
3.6.2 考试重点整理 40
3.6.3 解题技巧 40
3.7 本章习题 42
第4章 选择结构 46
4.1 关系运算和逻辑运算 46
4.1.1 关系运算符和关系表达式 46
4.1.2 逻辑运算符和逻辑表达式 47
4.2 if语句和嵌套if语句 50
4.2.1 if语句 50
4.2.2 嵌套if语句 52
4.3 条件运算符和条件表达式 54
4.4 switch语句 56
4.5 语句标号和goto语句 60
4.5.1 语句标号 60
4.5.2 goto语句 60
4.6 应试加油站 60
4.6.1 考频统计 61
4.6.2 考试重点整理 61
4.6.3 解题技巧 62
4.7 本章习题 65
第5章 循环结构 68
5.1 while语句构成的循环结构 68
5.1.1 while循环的一般形式 68
5.1.2 while循环的执行过程 68
5.2 do-while语句构成的循环结构 70
5.2.1 do-while语句构成的循环结构 70
5.2.2 do-while循环的执行过程 71
5.3 for语句构成的循环结构 72
5.3.1 for语句构成的循环结构 72
5.3.2 for循环的执行过程 73
5.3.3 有关for语句的说明 73
5.4 循环结构的嵌套 76
5.5 break和continue语句的作用 80
5.5.1 break语句 80
5.5.2 continue语句 80
5.6 程序举例 81
5.7 应试加油站 83
5.7.1 考频统计 83
5.7.2 考试重点整理 84
5.7.3 解题技巧 84
5.8 本章习题 89
第6章 字符型数据 93
6.1 字符型常量 93
6.1.1 字符常量 93
6.1.2 转义字符常量 93
6.1.3 字符串常量 94
6.1.4 对字符常量进行的运算 95
6.2 字符变量 96
6.3 字符的输入和输出 96
6.3.1 调用printf和scanf函数输出和输入字符 96
6.3.2 调用putchar和getchar函数输出和输入字符 96
6.4 程序举例 98
6.5 应试加油站 99
6.5.1 考频统计 99
6.5.2 考试重点整理 99
6.5.3 解题技巧 99
6.6本章习题 101
第7章 函数 104
7.1 库函数 104
7.2 函数的定义和返回值 105
7.2.1 函数的定义 105
7.2.2 函数的返回值 106
7.3 函数的调用 108
7.3.1 函数的两种调用方式 108
7.3.2 函数调用时的语法要求 108
7.4 函数的说明 110
7.4.1 函数说明的形式 110
7.4.2 函数说明的位置 111
7.5 函数间的数据传递 112
7.6 程序举例 115
7.7 应试加油站 116
7.7.1 考频统计 116
7.7.2 考试重点整理 117
7.7.3 解题技巧 117
7.8 本章习题 120
第8章 指针 123
8.1 变量的地址和指针 123
8.2 指针变量的定义和指针变量的基类型 124
8.3 给指针变量赋值 125
8.3.1 给指针变量赋地址值 125
8.3.2 给指针变量赋“空”值 126
8.4 对指针变量的操作 126
8.4.1 通过指针来引用一个存储单元 126
8.4.2 移动指针 129
8.4.3 指针比较 130
8.5 函数之间地址值的传递 130
8.6 应试加油站 133
8.6.1 考频统计 133
8.6.2 考试重点整理 133
8.6.3 解题技巧 134
8.7 本章习题 137
第9章 数组 140
9.1 一维数组的定义和一维数组元素的引用 140
9.1.1 一维数组的定义 140
9.1.2 一维数组元素的引用 141
9.1.3 一维数组的初始化 141
9.1.4 通过赋初值定义数组的大小 142
9.1.5 一维数组的定义和数组元素引用举例 142
9.2 一维数组和指针 144
9.2.1 一维数组和数组元素的地址 144
9.2.2 通过数组的首地址引用数组元素 144
9.2.3 通过指针及带下标的指针变量引用一维数组元素 145
9.2.4 指针变量的运算 145
9.3 函数之间对一维数组和数组元素的引用 147
9.3.1 数组名作为实参 147
9.3.2 数组元素地址作为实参 148
9.3.3 函数的指针形参和函数体中数组的区别 149
9.4 一维数组应用举例 150
9.5 二维数组的定义和二维数组元素的引用 154
9.5.1 二维数组的定义 154
9.5.2 二维数组元素的引用 155
9.5.3 二维数组的初始化 155
9.5.4 通过赋初值定义二维数组的大小 156
9.6 二维数组和指针 157
9.6.1 二维数组和数组元素的地址 157
9.6.2 通过地址来引用二维数组元素 157
9.6.3 通过建立一个指针数组来引用二维数组元素 158
9.6.4 通过建立一个行指针来引用二维数组元素 158
9.7 二维数组名和指针数组作为实参 159
9.7.1 二维数组名作为实参 159
9.7.2 指针数组作为实参 160
9.8 二维数组应用举例 161
9.9 应试加油站 163
9.9.1 考频统计 163
9.9.2 考试重点整理 164
9.9.3 解题技巧 165
9.10 本章习题 169
第10章 字符串 173
10.1 利用一维字符数组存放字符串 173
10.1.1 字符串的相关概念 173
10.1.2 通过赋初值的方式给一维字符数组赋字符串 173
10.1.3 在赋初值时直接赋字符串常量 174
10.2 使指针指向一个字符串 175
10.3 字符串的输入和输出 177
10.3.1 字符串的输入 177
10.3.2 字符串的输出 178
10.4 字符串数组 179
10.5 用于字符串处理的函数 180
10.6 字符数组和字符串应用举例 184
10.7 应试加油站 185
10.7.1 考频统计 185
10.7.2 考试重点整理 186
10.7.3 解题技巧 186
10.8 本章习题 192
第11章 对函数的进一步讨论 196
11.1 传给main函数的参数 196
11.2 通过实参向函数传递函数名或指向函数的指针变量 197
11.3 函数的递归调用 198
11.4 函数的嵌套调用 202
11.5 应试加油站 203
11.5.1 考频统计 203
11.5.2 考试重点整理 203
11.5.3 解题技巧 204
11.6 本章习题 206
第12章 C语言中用户标识符的作用域和存储类 209
12.1 局部变量和全局变量 209
12.2 局部变量的作用域和生存期 211
12.2.1 auto变量 211
12.2.2 register变量 211
12.2.3 静态存储类的局部变量 212
12.3 全局变量的作用域和生存期 213
12.3.1 在同一编译单位内扩展全局变量的作用域 214
12.3.2 在不同编译单位内扩展全局变量的作用域 214
12.3.3 静态全局变量 215
12.4 函数的存储分类 215
12.4.1 利用extern说明函数 215
12.4.2 利用static说明函数 215
12.5 应试加油站 216
12.5.1 考频统计 216
12.5.2 考试重点整理 216
12.5.3 解题技巧 217
12.6 本章习题 219
第13章 编译预处理和动态存储分配 223
13.1 编译预处理 223
13.1.1 宏替换 223
13.1.2 文件包含 227
13.2 动态存储分配 227
13.2.1 malloc函数和free函数 228
13.2.2 calloc函数 228
13.3 应试加油站 229
13.3.1 考频统计 229
13.3.2 考试重点整理 230
13.3.3 解题技巧 230
13.4 本章习题 232
第14章 结构体、共用体和用户自定义类型 235
14.1 利用typedef说明一种新类型名 235
14.2 结构体类型 236
14.2.1 结构体类型的说明 236
14.2.2 结构体类型的变量定义 237
14.2.3 结构体类型变量的引用 239
14.2.4 结构体类型变量的赋值和初始化 239
14.2.5 结构体类型数组的定义和赋值 240
14.2.6 结构体指针变量 242
14.2.7 通过结构体变量构成链表 247
14.3 共用体 251
14.3.1 共用体类型的说明和变量定义 251
14.3.2 共用体变量的引用 252
14.4 应试加油站 254
14.4.1 考频统计 254
14.4.2 考试重点整理 254
14.4.3 解题技巧 255
14.5 本章习题 259
第15章 位运算 264
15.1 位运算符 264
15.2 位运算符的运算功能 265
15.3 应试加油站 268
15.3.1 考频统计 268
15.3.2 考试重点整理 268
15.3.3 解题技巧 269
15.4 本章习题 269
第16章 文件 271
16.1 C语言文件的概念 271
16.2 文件指针 272
16.3 fopen函数 272
16.4 fclose函数 274
16.5 fgetc和fputc函数 275
16.6 feof函数 277
16.7 fscanf和fprintf函数 277
16.8 fgets和fputs函数 278
16.9 fread和fwrite函数 278
16.10 文件定位函数 280
16.10.1 fseek函数 280
16.10.2 ftell函数 280
16.10.3 rewind函数 281
16.11 应试加油站 281
16.11.1 考频统计 281
16.11.2 考试重点整理 281
16.11.3 解题技巧 282
16.12 本章习题 285
第17章 上机指导 289
17.1 上机考试简介 289
17.2 上机考试环境 289
17.2.1 上机考试的软、硬件环境 289
17.2.2 考试时间 289
17.2.3 考试步骤 290
17.2.4 光盘上机操作使用说明 292
17.3 应试加油站 293
17.3.1 考试重点整理 293
17.3.2 解题技巧 295
17.4 本章习题 313
第18章 模拟试题与分析 317
18.1 笔试全真模拟试题 317
18.1.1 笔试模拟试题一 317
18.1.2 笔试模拟试题二 323
18.1.3 笔试模拟试题三 331
18.1.4 笔试模拟试题一参考答案与解析 338
18.1.5 笔试模拟试题二参考答案与解析 341
18.1.6 笔试模拟试题三参考答案与解析 345
18.2 上机全真模拟试题 348
18.2.1 上机全真模拟试题一 348
18.2.2 上机全真模拟试题二 349
18.2.3 上机全真模拟试题三 351
18.2.4 上机全真模拟试题一参考答案及解析 352
18.2.5 上机全真模拟试题二参考答案及解析 353
18.2.6 上机全真模拟试题三参考答案及解析 354
附录A 2009年9月全国计算机等级考试二级笔试试卷C语言程序设计 355
附录B 2009年3月全国计算机等级考试二级笔试试卷C语言程序设计 366
附录C 习题答案 378