第一篇 程序设计基础 3
第1章 计算机与计算机程序 3
1.1硬件与软件 3
1.1.1计算机的基本组成 3
1.1.2计算机的基本原理 5
1.2计算机数据处理技术 6
1.2.1字符及文本处理 7
1.2.2数字媒体数据处理 8
1.2.3现代计算 9
1.2.4云计算的关键 9
思考与练习 9
第2章 计算机程序设计与程序语言 10
2.1程序设计与软件开发 10
2.1.1程序设计语言的分类 10
2.1.2程序设计 11
2.1.3软件开发 11
2.2程序设计与算法 13
2.2.1算法及其特征 13
2.2.2算法的表示 14
2.3程序设计的实现与程序语言 15
2.3.1编程语言 15
2.3.2编码的风格 16
2.3.3编程准则 17
思考与练习 17
第3章CDIO与程序设计 18
3.1 CDIO基本内容 18
3.2软件工程基本原则 18
3.2.1软件工程的基本原理 18
3.2.2以CDIO方法体现软件工程的原则 20
3.2.3面向过程与面向对象 20
思考与练习 21
第二篇 问题驱动的程序设计 25
第4章 软件工程师与计算机的简单对话 25
4.1数据处理 25
4.1.1数据处理简化流程 25
4.1.2简单问题求解 27
4.2数据类型与变量 29
4.2.1数据类型 29
4.2.2变量定义 30
4.2.3算术运算与赋值运算 31
4.2.4数据类型的转换 33
4.3小结 33
4.4 CDIO应用案例 34
思考与练习 35
第5章 面向用户的输入与输出 36
5.1输入处理 36
5.1.1单字符输入 36
5.1.2字符串输入 37
5.1.3格式化输入 37
5.1.4文件读取 39
5.1.5文件的打开与关闭 39
5.2输出处理 43
5.2.1单字符输出 43
5.2.2字符串输出 44
5.2.3格式化输出函数 44
5.2.4格式字符串 45
5.2.5文件写 47
5.2.6格式化写文件 49
5.3用户界面设计初步 50
5.4小结 51
5.5 CDIO应用案例 51
思考与练习 56
第6章 简单问题 58
6.1算法的直接应用 58
6.1.1简单问题的需求规约 58
6.1.2简单问题的算法选择 59
6.2位运算 61
6.2.1位运算 61
6.2.2&按位与运算 62
6.2.3|按位或运算 63
6.2.4^按位异或运算 63
6.2.5~按位取反运算 64
6.2.6不同存储空间大小数据的位运算 64
6.2.7<<左移运算 65
6.2.8>>右移运算 65
6.3解决方案的拓展问题 66
6.4小结 70
6.5 CDIO应用案例 70
思考与练习 72
第7章 决策性问题 73
7.1关系运算与逻辑运算 73
7.1.1关系运算 73
7.1.2逻辑运算 75
7.2边界型条件if以及if-else 76
7.2.1 if与if-else分支结构 76
7.2.2多因素约束条件与嵌套式if-else结构 80
7.2.3条件运算符?: 86
7.3预设型条件switch-case-break 87
7.4综合性条件的决策 89
7.5小结 90
7.6 CDIO应用案例 92
思考与练习 95
第8章 重复性问题 96
8.1有限次重复与for循环 96
8.1.1计数循环过程设计及for语句的使用 96
8.1.2嵌套式for语句的使用方法 99
8.2条件重复与while和do-while循环 101
8.2.1先验条件循环设计与while语句 101
8.2.2后验条件循环设计与do-while语句 103
8.3 for循环与while循环的选择与综合应用 105
8.3.1循环次数省略与continue语句 106
8.3.2循环状态终止与break语句 107
8.3.3特殊循环和跳转与goto语句 109
8.3.4 for循环的特殊应用 111
8.3.5循环结构的特殊用例 113
8.4小结 115
8.5 CDIO应用案例 116
思考与练习 120
第9章 复杂数据中相同数据类型的处理 121
9.1一维数组 121
9.1.1使用数组的原因 121
9.1.2一维数组的声明和定义方法 122
9.1.3一维数组的初始化方法 122
9.1.4一维数组的元素访问方法 123
9.1.5一维数组的普通应用 124
9.1.6一维数组在模块化编程中的应用 126
9.2二维数组 129
9.2.1使用二维数组的原因 129
9.2.2二维数组的声明和定义方法 129
9.2.3二维数组的初始化方法 130
9.2.4数组完整初始化的略写方法 131
9.2.5二维数组元素访问方法 132
9.2.6二维数组的普通应用 133
9.2.7二维数组在模块化编程中的应用 134
9.3三维及多维数组 135
9.3.1三维数组的声明和定义方法 136
9.3.2三维数组的初始化方法 136
9.3.3三维数组的元素访问方法 138
9.3.4三维数组的普通应用 139
9.3.5三维数组在模块化编程中的应用 141
9.4字符串 142
9.4.1字符串的输入与输出 142
9.4.2字符数组的声明和初始化 143
9.4.3字符串的访问方法 143
9.4.4字符串的普通应用 144
9.4.5字符串在模块化编程中的应用 149
9.5小结 150
9.6 CDIO应用案例 150
9.6.1案例1:整型数据的输入校验 150
9.6.2案例2:单词统计 154
思考与练习 157
第10章 复杂数据中不同数据类型的处理 159
10.1结构体 159
10.1.1使用结构体的原因 159
10.1.2结构体的定义和声明 159
10.1.3结构体的成员访问和初始化 161
10.1.4结构体的简单应用 162
10.1.5结构体在模块化编程中的应用 162
10.2结构体数组 163
10.2.1使用结构体数组的原因 163
10.2.2结构体数组的声明和初始化 164
10.2.3结构体数组的应用 165
10.2.4结构体数组关联数组 166
10.3联合体 166
10.3.1使用联合体的原因 166
10.3.2联合体的定义和声明 167
10.3.3联合体的成员访问和初始化 168
10.3.4联合体的简单应用 169
10.3.5联合体在模块化编程中的应用 170
10.4枚举数据类型 170
10.4.1使用枚举数据类型的原因 170
10.4.2枚举数据类型的定义和声明 170
10.4.3枚举数据类型的常量列表和常量值 171
10.4.4枚举数据类型的简单应用 171
10.5小结 172
10.6 CDIO应用案例 172
思考与练习 175
第11章 数据的间接访问 176
11.1指针 176
11.1.1数据的访问方式 176
11.1.2指针的声明与使用 177
11.1.3指针的运算 179
11.2指针与传地址 180
11.2.1函数的传值调用 180
11.2.2函数的传地址调用 181
11.3数组与指针 182
11.3.1数组名就是指针常量 182
11.3.2数组元素的指针访问形式 183
11.3.3数组名作为参数时 184
11.3.4数组名形式参数的等价声明 185
11.3.5字符数组与字符指针 186
11.4函数与指针 186
11.4.1指向函数的指针声明和定义 186
11.4.2指向函数的指针初始化和指针应用 187
11.4.3指向函数的指针与返回值是指针的函数 187
11.4.4复杂声明 187
11.5结构体与指针 188
11.5.1指向结构体的指针 188
11.5.2通过指针访问结构体成员 188
11.5.3自引用结构体 189
11.5.4简单的链表 189
11.6小结 190
11.7 CDIO应用案例 190
11.7.1案例1:整型数据的输入校验 190
11.7.2案例2:单词统计 194
11.7.3案例3:根据输入值给出对应月份值及对应英文名称 197
思考与练习 198
第12章 解决方案的拓展与重用:函数 199
12.1模块重用与函数 199
12.1.1软件重用基本概念 199
12.1.2程序的模块化设计 200
12.1.3函数及其定义 201
12.1.4函数调用方法及参数传递 205
12.1.5函数及变量的作用域 211
12.1.6递归函数 216
12.2标准库函数与自建函数库 219
12.2.1标准库函数 219
12.2.2自建函数库 223
12.3小结 224
12.4 CDIO应用案例 226
12.4.1案例1:一元二次方程求解 226
12.4.2案例2:汉诺塔问题 229
思考与练习 231
第13章 从程序设计到软件开发 232
13.1模块化程序与信息隐藏 232
13.1.1多模块编译 232
13.1.2自定义头文件 234
13.2结构化与面向对象程序设计方法 235
13.3小结 236
思考与练习 236
第三篇C语言参考 239
第14章C语言基本元素 239
14.1基本数据类型及算符 239
14.1.1基本数据类型 239
14.1.2算符 240
14.1.3运算符的优先顺序 240
14.2流程控制 241
14.2.1 if和if-else语句以及条件表达式 241
14.2.2 switch语句 243
14.2.3 for循环 243
14.2.4 while循环 244
14.2.5 break与continue 244
14.3复杂数据类型 245
14.3.1数组与字符串 245
14.3.2地址与指针 245
14.3.3结构体及结构体数组 245
14.3.4联合体 246
14.3.5枚举 246
14.4函数 246
14.4.1标准库函数 246
14.4.2自建函数 247
14.4.3函数调用方法及返回值 247
14.5文件 248
14.5.1文本文件与二进制文件 248
14.5.2文件的基本操作 248
14.6预处理 249
14.6.1宏定义 249
14.6.2文件包含 249
14.6.3条件编译 250
附录A C语言程序常见错误 251
附录B C语言程序的风格 252
附录C C语言常用开发环境 253
C.1用Microsoft Visual C++ 2008速成版编写C语言程序 253
C.2用Dev-C++编写C语言程序 256
附录D标准C库函数 260
附录E ASCII码表 264