第 1 章 引论・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1
案例 1:设计加法表 ・・・・・・・・・・・・・・・・・・・・・1
Prog1.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1
Prog1.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・2
Prog1.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・3
Prog1.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・4
Prog1.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・5
案例 2:一组数据的“逆序”输出 ・・・5
Prog2.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・5
Prog2.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・6
Prog2.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・7
Prog2.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・7
Prog2.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・8
Prog2.6 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・9
第 2 章 数据类型 ・・・・・・・・・・・・・・・・・・・・・・・・・・.10
案例 3:求两个数的和 ・・・・・・・・・・・・・・・.10
Prog3.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.10
Prog3.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.10
案例 4:整型数据 ・・・・・・・・・・・・・・・・・・・・・.11
Prog4.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.11
Prog4.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.12
Prog4.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.12
Prog4.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.13
案例 5:实型数据 ・・・・・・・・・・・・・・・・・・・・・.15
Prog5.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.15
Prog5.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.15
Prog5.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.16
Prog5.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.17
案例 6:字符型数据 ・・・・・・・・・・・・・・・・・・.17
Prog6.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.17
Prog6.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.18
Prog6.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.18
Prog6.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.19
Prog6.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.20
Prog6.6 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.21
Prog6.7 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.21
第 3 章 运算符与表达式 ・・・・・・・・・・・・・・・・・.23
案例 7:算术运算符与表达式・・・・・・.23
Prog7.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.23
Prog7.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.23
Prog7.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.24
Prog7.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.25
案例 8:关系运算符与表达式・・・・・・.26
Prog8.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.26
案例 9:逻辑运算符与表达式・・・・・・.27
Prog9.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.27
Prog9.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.28
Prog9.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.28
Prog9.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.29
案例 10:赋值运算符与表达式・・・・・.30
Prog10.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.30
案例 11:逗号运算符与表达式・・・・・.31
Prog11.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.31
第 4 章 输入与输出 ・・・・・・・・・・・・・・・・・・・・・・・.32
案例 12:整型数据输入・・・・・・・・・・・・・・.32
Prog12.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.32
案例 13:实型数据输入・・・・・・・・・・・・・・.33
Prog13.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.33
案例 14:字符型数据输入・・・・・・・・・・・.34
Prog14.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.34
案例 15:数值型数据与字符型
数据混合输入・・・・・・・・・・・・・・.35
Prog15.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.35
案例 16:整型数据输出・・・・・・・・・・・・・・.36
Prog16.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.36
案例 17:实型数据输出・・・・・・・・・・・・・・.37
Prog17.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.37
案例 18:字符型数据输出・・・・・・・・・・・.38
Prog18.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.38
案例 19:文件数据写入和读出・・・・・.39
Prog19.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.39
第 5 章 顺序结构程序设计与执行 ・・・・・.42
案例 20:顺序结构程序设计
与执行・・・・・・・・・・・・・・・・・・・・・・・.42
Prog20.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.42
案例 21:数据的交换・・・・・・・・・・・・・・・・・.42
Prog21.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.42
Prog21.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.43
Prog21.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.44
Prog21.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.46
案例 22:四舍五入・・・・・・・・・・・・・・・・・・・・.48
Prog22.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.48
第 6 章 分支结构程序设计与执行 ・・・・・.50
案例 23:分支结构程序设计
与执行・・・・・・・・・・・・・・・・・・・・・・・.50
Prog23.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.50
Prog23.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.51
Prog23.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.51
Prog23.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.54
案例 24:求数据的极值・・・・・・・・・・・・・・.56
Prog24.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.56
Prog24.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.57
案例 25:简单数据排序・・・・・・・・・・・・・・.59
Prog25.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.59
Prog25.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.60
案例 26:分段函数求解・・・・・・・・・・・・・・.61
Prog26.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.61
Prog26.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.62
Prog26.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.63
Prog26.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.64
案例 27:开关语句程序设计与
执行・・・・・・・・・・・・・・・・・・・・・・・・・・.65
Prog27.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.65
案例 28:学生成绩分析与设计・・・・・.66
Prog28.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.66
案例 29:简易菜单设计・・・・・・・・・・・・・・.67
Prog29.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.67
第 7 章 循环结构程序设计与执行 ・・・・・.69
案例 30:循环结构程序设计
与执行・・・・・・・・・・・・・・・・・・・・・・・.69
Prog30.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.69
Prog30.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.70
Prog30.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.71
案例 31:顺序结构与循环结构 ・・・・.72
Prog31.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.72
案例 32:多重(嵌套)循环结构
程序设计与执行・・・・・・・・・・・.73
Prog32.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.73
案例 33:求和问题・・・・・・・・・・・・・・・・・・・・.74
Prog33.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.74
Prog33.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.76
Prog33.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.78
Prog33.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.79
Prog33.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.80
案例 34:循环结构解决典型问题 ・.81
Prog34.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.81
Prog34.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.82
Prog34.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.84
Prog34.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.86
Prog34.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.87
Prog34.6 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.89
Prog34.7 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.90
Prog34.8 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.91
案例 35:钻石图的设计・・・・・・・・・・・・・・.92
Prog35.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.92
Prog35.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.95
Prog35.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.97
Prog35.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・.99
第 8 章 指针的定义与引用 ・・・・・・・・・・・・・.102
案例 36:指针的定义与含义 ・・・・・・.102
Prog36.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.102
案例 37:指针的引用・・・・・・・・・・・・・・・・.104
Prog37.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.104
Prog37.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.105
Prog37.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・106
案例 38:指针的指针定义与
引用・・・・・・・・・・・・・・・・・・・・・・・・・・107
Prog38.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・107
第 9 章 数组与指针 ・・・・・・・・・・・・・・・・・・・・・・・109
案例 39:数组的含义与定义・・・・・・・・109
Prog39.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・109
Prog39.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.110
Prog39.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.112
Prog39.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.113
案例 40:数组与指针・・・・・・・・・・・・・・・・.115
Prog40.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.115
案例 41:指针运算・・・・・・・・・・・・・・・・・・・.117
Prog41.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.117
Prog41.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・120
Prog41.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・123
案例 42:数组元素引用・・・・・・・・・・・・・・125
Prog42.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・125
Prog42.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・126
Prog42.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・130
Prog42.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・132
Prog42.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・134
案例 43:多维数组与指针・・・・・・・・・・・135
Prog43.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・135
Prog43.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・137
Prog43.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・139
Prog43.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・142
Prog43.5 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・144
案例 44:多维数组解决经典
问题・・・・・・・・・・・・・・・・・・・・・・・・・・145
Prog44.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・145
Prog44.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・147
Prog44.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・149
Prog44.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・152
案例 45:字符数组与字符串・・・・・・・・154
Prog45.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・154
Prog45.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・156
Prog45.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・158
Prog45.4 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・161
案例 46:数组数据处理综合
案例・・・・・・・・・・・・・・・・・・・・・・・・・.162
Prog46.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.162
第 10 章 模块化程序设计・・・・・・・・・・・・・・・.168
案例 47:库函数调用・・・・・・・・・・・・・・・・.168
Prog47.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.168
Prog47.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.168
案例 48:形参与实参・・・・・・・・・・・・・・・・.170
Prog48.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.170
案例 49:函数的返回值・・・・・・・・・・・・・.172
Prog49.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.172
案例 50:函数调用・・・・・・・・・・・・・・・・・・・.174
Prog50.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.174
Prog50.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.175
案例 51:和与积・・・・・・・・・・・・・・・・・・・・・・.177
Prog51.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.177
Prog51.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.179
案例 52:递归调用・・・・・・・・・・・・・・・・・・・.180
Prog52.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.180
Prog52.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.182
案例 53:递归调用经典案例 ・・・・・・.185
Prog53.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.185
Prog53.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.186
案例 54:数组、指针与模块化 ・・・.187
Prog54.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.187
Prog54.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.189
Prog54.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.191
案例 55:变量的作用域・・・・・・・・・・・・・.192
Prog55.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.192
Prog55.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.194
案例 56:函数返回值为指针 ・・・・・・.196
Prog56.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.196
案例 57:预编译处理・・・・・・・・・・・・・・・・.197
Prog57.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.197
第 11 章 结构体与链表・・・・・・・・・・・・・・・・・・.199
案例 58:结构体类型与结构体
变量・・・・・・・・・・・・・・・・・・・・・・・・・.199
Prog58.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.199
Prog58.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.201
案例 59:结构体变量与结构体
指针・・・・・・・・・・・・・・・・・・・・・・・・・・202
Prog59.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・202
Prog59.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・204
案例 60:结构体数组与指针・・・・・・・・205
Prog60.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・205
案例 61:结构体典型案例・・・・・・・・・・・209
Prog61.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・209
案例 62:链表・・・・・・・・・・・・・・・・・・・・・・・・・・210
Prog62.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・210
Prog62.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・213
案例 63:链表应用案例・・・・・・・・・・・・・・214
Prog63.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・214
案例 64:共用体类型・・・・・・・・・・・・・・・・・219
Prog64.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・219
案例 65:枚举类型・・・・・・・・・・・・・・・・・・・・220
Prog65.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.220
案例 66:位运算・・・・・・・・・・・・・・・・・・・・・・.222
Prog66.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.222
Prog66.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.224
第 12 章 文件操作・・・・・・・・・・・・・・・・・・・・・・・・.226
案例 67:文件的打开与关闭 ・・・・・・.226
Prog67.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.226
案例 68:文件的读写・・・・・・・・・・・・・・・・.228
Prog68.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.228
Prog68.2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.229
Prog68.3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.230
案例 69:文件的控制・・・・・・・・・・・・・・・・.233
Prog69.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.233
案例 70:文件操作典型案例 ・・・・・・.234
Prog70.1 ・・・・・・・・・・・・・・・・・・・・・・・・・・・.234
参考文献 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・.236
展开