基 础篇 3
第1章 引论 3
1. 1程序设计概述 3
1.1.1为什么需要程序设计 4
1.1.2程序设计语言 6
1.2计算机系统 9
1.2.1硬件系统 10
1.2. 2软件系统 11
1.2.3使用计算机系统的一些话题 11
1.3 C语言程序设计基础 12
1.3.1 C程序的基本结构 12
1.3.2 C程序的编写和运行 15
1.4关于数据结构和算法 18
1.5贯穿全书的案例 19
本章小结 20
习题一 20
第2章 数据类型和运算 22
2.1问题引入 22
2.2数据类型 23
2.2.1整数类型 23
2.2.2字符类型 25
2.2.3浮点类型 27
2. 3常量与变量 27
2.3.1标识符 27
2.3.2常量 28
2. 3.3变量 30
2.4运算符和表达式 31
2.4.1运算符和表达式概述 31
2.4.2赋值运算符和赋值表达式 33
2.4.3算术运算符和算术表达式 34
2.4.4关系运算符和关系表达式 37
2.4.5逻辑运算符和逻辑表达式 39
2.4.6条件运算符和条件表达式 40
2.4.7逗号运算符和逗号表达式 41
2.4.8复合赋值运算符和复合赋值表达式 42
2.4.9 sizeof运算符 43
2.5混合运算 44
2.5.1运算符的优先级规则 44
2.5. 2类型转换 46
2.6编程实例 48
2.7解决方案 53
本章小结 54
习题二 54
第3章 顺序结构 58
3.1问题引入 58
3.2 C语句 59
3.3字符输入输出 61
3.3.1 getchar()函数(字符输入函数) 61
3.3.2 putchar()函数(字符输出函数)& 6 2
3.4格式化输入输出& 6 3
3.4.1 printf()函数(格式化输出函数) 63
3.4.2 scanf()函数(格式化输入函数) 66
3.5编译预处理 70
3.5.1文件包含 70
3.5.2宏 70
3.5.3条件编译 71
本章小结 73
习题三 73
第4章 选择结构 75
4.1问题引入 75
4.2 if条件分支语句 76
4.2.1单分支if语句 76
4.2.2双分支ifelse语句 78
4.2.3多分支ifelse if语句 79
4.2.4 if语句的嵌套 81
4.3 switch多分支语句 83
4.4解决方案 88
本章小结 90
习题四 90
第5章 循环结构 92
5.1问题引入 92
5.2 while语句 93
5.2.1当型while 93
5.2.2直到型dowhile 97
5.3 for语句 99
5.4循环嵌套 103
5.5跳出循环语句 105
5.5.1 break语句 105
5.5.2 continue语句 108
5.6循环的应用 109
5.7解决方案 115
本章小结 116
习题五 116
第6章 函数 118
6.1问题引入 118
6.2函数的定义 119
6.2.1函数的分类 119
6.2.2函数定义的一般形式 120
6. 2.3函数的参数 122
6. 2.4函数的返回值 122
6.3函数的调用 123
6.3.1函数调用的一般形式 124
6.3.2函数调用的使用方式 126
6.3.3函数原型声明和定义 126
6.3.4嵌套调用 127
6.4函数的设计和调试 128
6. 5变量的分类 130
6.5.1局部变量和全局变量 131
6.5.2动态变量和静态变量 134
6.5.3外部变量 136
6. 6解决方案 137
本章小结 137
习题六 138
第7章 数组 140
7. 1问题引入 140
7. 2一维数组 141
7.2.1一维数组的声明 141
7.2.2一维数组元素的使用 142
7.2.3一维数组的初始化 145
7.2.4一维数组作为函数的参数 147
7.2.5一维数组的应用 149
7.3二维数组 156
7.3.1二维数组的声明和使用 156
7.3.2二维数组的初始化 159
7.3.3二维数组作为函数的参数 162
7.3.4二维数组的应用 163
7.3.5二维数组和一维数组的关系 169
7. 4字符数组 171
7.4.1字符数组、字符串及其初始化 171
7.4.2字符串处理函数 174
7.4.3一维、二维字符数组和字符串处理函数的应用 176
7. 5解决方案 179
本章小结 179
习题七 179
第8章 指针 183
8.1问题引入 184
8.2指针的定义和使用 184
8.2.1指针的定义 184
8.2.2指针的使用 186
8.3指针的运算 189
8.3. 1赋值运算 189
8.3.2比较运算 190
8.3.3算术运算 191
8.3.4 const作用于指针 193
8.4指针和数组 195
8.4.1指向数组元素的指针 195
8.4.2指向字符的指针、字符数组和字符串 200
8.4.3指针数组 202
8.4.4指向指针的指针 203
8. 5指针和函数 204
8.5.1指针作为函数的参数 204
8.5.2函数返回指针 209
8.6动态内存管理 211
8. 6.1动态内存分配 211
8.6.2动态内存释放 214
8.6.3动态内存管理的相关考虑 214
8. 7解决方案 215
本章小结 216
习题八 217
第9章 结构体 221
9. 1问题引入 221
9.2结构体的定义和使用 222
9.2.1结构体类型声明 222
9.2.2结构体变量定义 225
9.2.3结构体变量的使用和初始化 226
9.3结构体数组 229
9.4结构体与指针 231
9.4.1指针变量作为结构体的成员 231
9.4.2指向结构体变量的指针 232
9.4.3指向结构体数组的指针 233
9.5结构体与函数 235
9.5.1结构体变量用作函数参数传递 235
9.5.2返回值类型为结构体的函数 239
9.6解决方案 241
本章小结 241
习题九 241
第10章 文件 245
10.1问题引入 245
10.2文件的打开和关闭 246
10.2.1 fopen()函数(文件打开函数) 246
10.2.2 fclose()函数(文件关闭函数) 247
10.3文件的读写 247
10.3.1字符的读写(fgetc和fputc) 247
10.3.2字符串的读写(f gets和fputs) 249
10.3.3数据块的读写(f read和fwrite) 251
10.3.4格式化的读写(fscanf和fprintf) 252
10.4关于文件的其他函数 254
10.4.1 rewind函数 254
10.4.2 fseek函数 254
10. 4. 3 ftell函数 255
10.4.4 ferror函数 256
10.5最终解决方案 257
本章小结 264
习题十 264
提 高篇 267
第11章 位运算 267
11. 1按位运算 267
11.2移位 268
11.3实例 269
第12章 递归 270
12.1递归函数 270
12.2 Hanoi塔问题 273
第13章 深入了解指针 276
13. 1指向数组的指针 276
13.2指向多维数组的指针 277
13.2.1二维数组 278
13.2.2指针和二维数组 278
13.2.3二维数组作为函数的参数 280
13.2.4关于高维数组的考虑&28. 3
13.3指向函数的指针 284
13.4指向结构的指针 287
13.5指向复杂类型的指针 290
13.6关于指针的高级话题 291
13.6.1 restrict指针 291
13.6.2浅复制和深复制 292
实 践篇 295
第14章 常见错误和程序调试 295
14.1程序错误 295
14. 1.1语法错误 296
14.1.2运行时错误 297
14.1.3逻辑错误 297
14.2调试程序 299
14.2.1编译器调试 299
14.2.2人工调试 301
14.3常见错误及解决方案 303
本章小结 308
习题十四 308
第15章 上机实验 309
15.1实验一选择结构(一) 309
15.1.1实验目的 309
15 1.2实验要求 309
15.1.3实验步骤 309
15 1.4实验总结 310
15.2实验二选择结构(二) 310
15.2.1实验目的 310
15.2.2实验要求 310
15.2.3实验步骤 310
15.2.4实验总结 311
15.3实验三循环结构(一) 311
15.3.1实验目的 311
15.3.2实验要求 311
15.3.3实验步骤 312
15.3.4实验总结 312
15.4实验四循环结构(二) 312
15. 4.1实验目的 312
15. 4.2实验要求 313
15. 4.3实验步骤 313
15.4.4实验总结 314
15.5实验五函数(一) 314
15.5.1实验目的 314
15.5.2实验要求 314
15.5.3实验步骤 314
15.5.4实验总结 315
15.6实验六函数(二) 315
15.6.1实验目的 315
15.6.2实验要求 315
15.6. 3实验步骤 315
15.6. 4实验总结 316
15.7实验七数组(一 ) 316
15.7.1实验目的 316
15.7.2实验要求 316
15.7.3实验步骤 316
15.7.4实验总结 317
15.8实验八数组(二) 317
15.8.1实验目的 317
15.8.2实验要求 317
15.8.3实验步骤 317
15.8.4实验总结 318
15.9实验九指针(一 ) 318
15. 9.1实验目的 318
15.9.2实验要求 318
15.9.3实验步骤 318
15.9.4实验总结 319
15.10实验十指针(二) 319
15. 10.1实验目的 319
15.10.2实验要求 319
15.10.3实验步骤 320
15.10.4实验总结 320
15.11实验十一结构体 320
15.11.1实验目的 320
15.11.2实验要求 320
15.11.3实验步骤 320
15.11.4实验总结 322
15.12实验十二文件 322
15.12. 1实验目的 322
15. 12. 2实验要求 322
15.12.3实验步骤 322
15. 12.4实验总结 322
附录A部分习题参考答案 324
附录B ASCII码表 329
附录C标准C头文件 330
附录D进制和码制 331
D.1进制 331
D.2码制 333
附录E C编码规范 336
参考文献 339