第1章 程序设计基本概念 1
1.1 程序和程序设计 2
1.1.1 C程序 2
1.1.2 程序设计 2
1.2 算法 3
1.3 结构化程序设计和模块化结构 4
1.3.1 结构化程序 4
1.3.2 模块化结构 5
1.4 典型例题分析 5
1.4.1 经典例题分析 5
1.4.2 历年真题详解 7
1.5 过关练习与答案 7
1.5.1 过关练习 7
1.5.2 参考答案 7
第2章 C程序设计的初步知识 9
2.1 简单C语言程序的构成和格式 10
2.2 常量、变量和标识符 11
2.2.1 标识符 11
2.2.2 常量 13
2.2.3 变量 13
2.3 整型数据 14
2.3.1 整型常量 14
2.3.2 整型变量 14
2.3.3 整型数据的分类 15
2.3.4 整数在内存中的存储形式 15
2.4 实型数据 15
2.4.1 实型常量 16
2.4.2 实型变量 16
2.5 算术表达式 17
2.5.1 基本的算术运算符 17
2.5.2 运算符的优先级、综合性和算术表达式 18
2.5.3 强制类型转换表达式 18
2.6 赋值表达式 18
2.6.1 赋值运算符和赋值表达式 19
2.6.2 复合的赋值表达式 19
2.6.3 赋值运算中的类型转换 20
2.7 自增、自减运算符和逗号运算符 20
2.7.1 自增运算符(++)和自减运算符(--) 20
2.7.2 逗号运算符和逗号表达式 21
2.8 典型例题分析 21
2.8.1 经典例题分析 21
2.8.2 历年真题详解 23
2.9 过关练习与答案 26
2.9.1 过关练习 26
2.9.2 参考答案 27
第3章 顺序结构 29
3.1 赋值语句 30
3.2 数据输出 30
3.2.1 printf函数的一般调用形式 30
3.2.2 printf函数中常用的格式说明 30
3.2.3 调用printf函数时的注意事项 33
3.3 数据输入 33
3.3.1 scanf函数的一般调用格式 33
3.3.2 scanf函数中常用的格式说明 34
3.3.3 通过scanf函数从键盘输入数据 34
3.4 复合语句和空语句 35
3.4.1 复合语句 35
3.4.2 空语句 36
3.5 程序举例 36
3.6 典型例题分析 37
3.6.1 经典例题分析 37
3.6.2 历年真题详解 39
3.7 过关练习与答案 40
3.7.1 过关练习 40
3.7.2 参考答案 42
第4章 选择结构 43
4.1 关系运算和逻辑运算 44
4.1.1 C语言中的逻辑值 44
4.1.2 关系运算符和关系表达式 44
4.1.3 逻辑运算符和逻辑表达式 45
4.2 if语句和其构成的选择结构 46
4.2.1 if语句 46
4.2.2 嵌套的if语句 48
4.3 条件表达式构成的选择结构 50
4.4 switch语句及其与break语句构成的选择结构 51
4.4.1 switch语句 51
4.4.2 switch的执行过程 52
4.5 语句标号和goto语句 54
4.5.1 语句标号 54
4.5.2 goto语句 55
4.6 典型例题分析 55
4.6.1 经典例题分析 55
4.6.2 历年真题详解 58
4.7 过关练习与答案 61
4.7.1 过关练习 61
4.7.2 参考答案 64
第5章 循环结构 65
5.1 while语句和其构成的循环结构 66
5.1.1 while循环的一般形式 66
5.1.2 while循环的执行过程 66
5.2 do...while语句和其构成的循环结构 67
5.2.1 do...while语句构成的循环结构 67
5.2.2 do...while循环的执行过程 67
5.3 for语句和其构成的循环结构 68
5.3.1 for语句构成的循环结构 68
5.3.2 for循环的执行过程 69
5.3.3 有关for语句的说明 69
5.4 循环结构的嵌套 71
5.5 break和continue语句在循环体中的作用 73
5.5.1 break语句 73
5.5.2 continue语句 74
5.6 程序举例 75
5.7 典型例题分析 77
5.7.1 经典例题分析 77
5.7.2 经典例题分析 82
5.8 过关练习与答案 85
5.8.1 过关练习 85
5.8.2 参考答案 89
第6章 字符型数据 91
6.1 字符型常量 92
6.1.1 字符常量 92
6.1.2 转义字符常量 92
6.1.3 字符串常量 93
6.1.4 可对字符量进行的运算 93
6.2 字符变量 94
6.3 字符的输入和输出 94
6.3.1 调用printf和scanf函数输出输入字符 94
6.3.2 调用putchar和getchar函数输出和输入字符 95
6.4 程序举例 96
6.5 典型例题分析 97
6.5.1 经典例题分析 97
6.5.2 历年真题详解 99
6.6 过关练习与答案 100
6.6.1 过关练习 100
6.6.2 参考答案 102
第7章 函数 103
7.1 库函数 104
7.2 函数的定义和返回值 105
7.2.1 函数的定义方法 105
7.2.2 函数的返回值 106
7.3 函数的调用 107
7.3.1 函数的两种调用方式 107
7.3.2 函数调用时的语法要求 107
7.4 函数的说明 108
7.4.1 函数说明的形式 108
7.4.2 函数说明的位置 108
7.5 调用函数和被调用函数之间的数据传递 109
7.6 程序举例 110
7.7 典型例题分析 112
7.7.1 经典例题分析 112
7.7.2 历年真题解析 114
7.8 过关练习与答案 118
7.8.1 过关练习 118
7.8.2 参考答案 120
第8章 指针 121
8.1 变量的地址和指针 122
8.2 指针变量的定义和指针变量的基类型 123
8.3 给指针变量赋值 124
8.3.1 给指针变量赋地址值 124
8.3.2 给指针变量赋“空”值 125
8.4 对指针变量的操作 125
8.4.1 通过指针来引用一个存储单元 125
8.4.2 移动指针 127
8.4.3 指针比较 128
8.5 函数之间地址值的传递 128
8.5.1 形参为指针变量时与实参之间的数据传递 128
8.5.2 直接改变调用函数中变量值的方法 128
8.5.3 函数返回地址值 129
8.6 典型例题分析 130
8.6.1 经典例题分析 130
8.6.2 历年真题解析 133
8.7 过关练习与答案 134
8.7.1 过关练习 134
8.7.2 参考答案 136
第9章 数组 137
9.1 一维数组的定义和一维数组元素的引用 138
9.1.1 一维数组的定义 138
9.1.2 一维数组元素的引用 139
9.1.3 一维数组的初始化 139
9.1.4 通过赋初值定义数组的大小 140
9.1.5 一维数组的定义和数组元素引用举例 140
9.2 一维数组和指针 140
9.2.1 一维数组和数组元素的地址 140
9.2.2 通过数组的首地址引用数组元素 141
9.2.3 通过指针及带下标的指针变量引用一维数组元素 141
9.2.4 指针变量的运算 142
9.3 函数之间对一维数组和数组元素的引用 143
9.3.1 数组元素做实参 143
9.3.2 数组名作实参 143
9.3.3 数组元素地址作为实参 144
9.3.4 函数的指针形参和函数体中数组的区别 145
9.4 一维数组应用举例 145
9.5 二维数组的定义和二维数组元素的引用 149
9.5.1 二维数组的定义 149
9.5.2 二维数组元素的引用 149
9.5.3 二维数组的初始化 150
9.5.4 通过赋初值定义二维数组的大小 150
9.6 二维数组和指针 151
9.6.1 二维数组和数组元素的地址 151
9.6.2 通过地址来引用二维数组元素 151
9.6.3 通过建立一个指针数组来引用二维数组元素 152
9.6.4 通过建立一个行指针来引用二维数组元素 152
9.7 二维数组名和指针数组作为实参 153
9.7.1 二维数组名作为实参和形参之间的数据传递 153
9.7.2 指针数组作为实参时和形参之间的数据传递 153
9.8 二维数组应用举例 153
9.9 典型例题分析 156
9.9.1 经典例题分析 156
9.9.2 历年真题详解 160
9.10 过关练习与答案 165
9.10.1 过关练习 165
9.10.2 参考答案 168
第10章 字符串 169
10.1 用一个一维字符数组来存放字符串 170
10.1.1 字符串的相关概念 170
10.1.2 通过赋初值的方式给一维字符数组赋字符串 170
10.2 使指针指向一个字符串 172
10.2.1 通过赋初值的方式使指针指向一个字符串 172
10.2.2 通过赋值运算使指针指向一个字符串 172
10.2.3 字符串用数组存储和用指针指向时的区别 172
10.3 字符串的输入和输出 173
10.3.1 输入和输出字符串时的必要条件 173
10.3.2 字符串的输入 173
10.3.3 字符串的输出 174
10.4 字符串数组 174
10.5 用于字符串处理的函数 175
10.6 字符数组和字符串应用举例 177
10.7 典型例题分析 179
10.7.1 经典例题分析 179
10.7.2 历年真题详解 185
10.8 过关练习与答案 186
10.8.1 过关练习 186
10.8.2 参考答案 190
第11章 对函数的进一步讨论 191
11.1 传给main函数的参数 192
11.2 通过实参向函数传递函数名或指向函数的指针变量 192
11.3 函数的递归调用 194
11.4 函数的嵌套调用 196
11.5 典型例题分析 197
11.5.1 经典例题分析 197
11.5.2 历年真题详解 199
11.6 过关练习与答案 200
11.6.1 过关练习 200
11.6.2 参考答案 202
第12章 C语言中用户标识符的作用域和存储分类 203
12.1 局部变量、全局变量和存储分类 204
12.1.1 用户标识符的作用域 204
12.1.2 局部变量、全局变量和存储分类 204
12.2 局部变量及其作用域和生存期 206
12.2.1 auto变量 206
12.2.2 register变量 206
12.2.3 静态存储类型的局部变量 207
12.3 全局变量及其作用域和生存期 207
12.3.1 全局变量的作用域和生存期 207
12.3.2 在同一编译单位内用extern扩展全局变量作用域 208
12.3.3 在不同编译单位内用extern扩展全局变量作用域 209
12.3.4 静态全局变量 209
12.4 函数的存储分类 209
12.4.1 用extern说明函数 210
12.4.2 用static说明函数 210
12.5 典型例题分析 210
12.5.1 经典例题分析 210
12.5.2 历年真题详解 212
12.6 过关练习与答案 213
12.6.1 过关练习 213
12.6.2 参考答案 215
第13章 编译预处理和动态存储分配 217
13.1 编译预处理 218
13.1.1 宏替换 218
13.1.2 文件包含 220
13.2 动态存储分配 220
13.2.1 malloc函数和free函数 221
13.2.2 calloc函数 221
13.3 典型例题分析 222
13.3.1 经典例题分析 222
13.3.2 历年真题详解 224
13.4 过关练习与答案 225
13.4.1 过关练习 225
13.4.2 参考答案 226
第14章 结构体和共用体 227
14.1 用typedef说明一种新类型名 228
14.2 结构体类型 228
14.2.1 结构体类型的说明 229
14.2.2 结构体类型的变量定义 230
14.2.3 结构体类型变量的引用 231
14.2.4 结构体类型变量的赋值和初始化 231
14.2.5 结构体类型数组的定义和赋值 232
14.2.6 结构体指针变量 233
14.2.7 通过结构体变量构成链表 236
14.3 共用体 239
14.3.1 共用体类型的说明和变量定义 239
14.3.2 共用体变量的引用 240
14.4 典型例题分析 242
14.4.1 经典例题分析 242
14.4.2 历年真题详解 245
14.5 过关练习与答案 248
14.5.1 过关练习 248
14.5.2 参考答案 253
第15章 位运算 255
15.1 位运算符 256
15.2 位运算符的运算 257
15.3 典型例题分析 259
15.3.1 经典例题分析 259
15.3.2 历年真题详解 260
15.4 过关练习与答案 260
15.4.1 过关练习 260
15.4.2 参考答案 261
第16章 文件 263
16.1 C语言文件的概念 264
16.2 文件指针 265
16.3 打开文件 265
16.4 关闭文件 266
16.5 调用getc(fgetc)和putc(fputc)函数进行输入输出 267
16.6 判断文件结束函数feof 268
16.7 fscanf函数和fprintf函数 269
16.8 fgets函数和fputs函数 269
16.9 fread函数和fwrite函数 270
16.10 文件定位函数 272
16.10.1 fseek函数 272
16.10.2 ftell函数 272
16.10.3 rewind函数 273
16.11 典型例题分析 273
16.11.1 经典例题分析 273
16.11.2 历年真题详解 276
16.12 过关练习与答案 277
16.12.1 过关练习 277
16.12.2 参考答案 280
第17章 上机指导 281
17.1 上机考试简介 282
17.2 上机考试环境 282
17.2.1 上机考试的软硬件环境 282
17.2.2 考试时间 282
17.2.3 考试步骤 282
17.2.4 光盘上机操作使用说明 284
17.3 常考题型提炼 285
17.3.1 数的转换与计算 285
17.3.2 数列与级数求和 287
17.3.3 矩阵运算 290
17.3.4 数组运算 293
17.3.5 排序 296
17.3.6 字符串运算 297
17.3.7 链表处理 300
17.3.8 其他 304
17.4 过关练习与答案 306
17.4.1 过关练习 306
17.4.2 参考答案 309
第18章 笔试全真模拟试题与解析 311
18.1 笔试全真模拟试题 311
18.1.1 笔试模拟试题一 311
18.1.2 笔试模拟试题二 317
18.1.3 笔试模拟试题三 325
18.2 笔试全真模拟试题参考答案与解析 332
18.2.1 笔试模拟试题一参考答案与解析 332
18.2.2 笔试模拟试题二参考答案与解析 334
18.2.3 笔试模拟试题三参考答案与解析 337
第19章 上机全真模拟试题与解析 341
19.1 上机全真模拟试题 341
19.1.1 上机全真模拟试题(一) 341
19.1.2 上机全真模拟试题(二) 343
19.1.3 上机全真模拟试题(三) 344
19.2 上机全真模拟试题参考答案及解析 346
19.2.1 上机全真模拟试题(一)参考答案及解析 346
19.2.2 上机全真模拟试题(二)参考答案及解析 347
19.2.3 上机全真模拟试题(三)参考答案及解析 347
附录A 2009年3月真题与解析 349
附录B 2008年9月真题与解析 363
附录C 2008年4月真题与解析 377
附录D 常考算法 391