《程式设计基础:从问题到程式(第2版)》是2016年1月1日出版的图书,作者是胡明、王红梅。
基本介绍
- 书名:程式设计基础:从问题到程式(第2版)
- 作者:胡明、王红梅
- ISBN:9787302411802
- 定价:39元
- 出版时间:2016年1月1日
书籍信息
作者:胡明、王红梅
定价:39元
印次:2-2
ISBN:9787302411802
出版日期:2016.01.01
印刷日期:2016.02.01
定价:39元
印次:2-2
ISBN:9787302411802
出版日期:2016.01.01
印刷日期:2016.02.01
内容简介
本书以C语言为工具,以程式设计过程为主线,结合实际问题,基于计算思维,通过“问题→想法→算法→程式”的问题求解过程,带领读者分析问题、构造算法、设计程式,在潜移默化中掌握程式设计语言的基本知识,掌握程式设计的一般过程和基本方法,提高计算思维能力以及应 用程式设计语言解决实际问题的能力。 本书适用于程式设计的初学者,主要面向没有任何编程知识和编程经历的读者。本书遵循初学者的认知规律和知识基础,科学安排知识单元之间的拓扑关係,概念清晰,实例丰富,深入浅出,是程式设计初学者的理想教材。
图书目录
第1章绪论1
1.1程式、程式设计与程式设计语言1
1.1.1程式与程式设计1
1.1.2程式设计语言2
1.2程式的基本构成4
1.2.1程式示例5
1.2.2基本字元集6
1.2.3词法单位6
1.2.4语法单位8
1.2.5程式8
1.3程式的上机过程12
1.3.1编程环境12
1.3.2程式编辑12
1.3.3程式编译13
1.3.4程式连线13
1.3.5运行调试13
1.4程式风格14
1.4.1标识符的命名规则14
1.4.2注释15
1.4.3缩进15
1.4.4行文格式16
1.5问题求解与程式设计17
1.5.1程式设计的一般过程17
1.5.2程式设计的核心——算法18
1.5.3程式设计实例——鸡兔同笼问题21
习题122
第2章数据的存储表示25
引例2.1计算圆的面积25
2.1数据的存储26
2.1.1二进制26
2.1.2记忆体27
2.2基本数据类型28
2.2.1整型29
2.2.2实型31
2.2.3字元型32
2.2.4逻辑型33
2.3常量34
2.3.1字面常量34
2.3.2符号常量36
2.4变数38
2.4.1变数的概念38
2.4.2变数的定义和初始化39
2.4.3变数的赋值40
2.5程式设计实例43
2.5.1实例1——温度转换43
2.5.2实例2——计算本息和43
习题244
第3章数据的运算处理47
3.1算术运算47
引例3.1求平均值47
3.1.1算术运算48
3.1.2运算符的优先权和结合性49
3.2逻辑运算50
引例3.2判断闰年50
3.2.1关係运算51
3.2.2逻辑运算51
3.3赋值运算52
3.3.1赋值运算52
3.3.2自增/自减运算53
3.4其他运算54
3.4.1逗号运算54
3.4.2取长度运算54
3.4.3条件运算55
3.5运算对象的类型转换55
3.5.1自动转换56
3.5.2强制转换57
3.6程式设计实例58
3.6.1实例1——通用产品代码UPC58
3.6.2实例2——疯狂赛车59
习题360
第4章程式的基本控制结构63
4.1顺序结构63
引例4.1整数的逆值63
4.1.1简单的顺序结构64
4.1.2複合语句65
4.2选择结构65
引例4.2水仙花数66
4.2.1逻辑值控制的选择结构67
4.2.2算术值控制的选择结构69
4.3循环结构71
引例4.3欧几里得算法71
4.3.1当型循环72
4.3.2直到型循环72
4.3.3计数型循环73
4.3.4循环结构的比较74
4.3.5循环结构的嵌套77
4.4其他控制语句78
引例4.4素数判定78
4.4.1break语句79
4.4.2continue语句80
4.5程式设计实例81
4.5.1实例1——将三个整数由小到大输出81
4.5.2实例2——今年已经过去多久了81
4.5.3实例3——百元买百鸡问题83
4.5.4实例4——哥德巴赫猜想84
习题485
第5章批量同类型数据的组织——数组88
5.1一维数组88
引例5.1舞林大会88
5.1.1一维数组的定义和初始化89
5.1.2一维数组的操作92
5.2二维数组94
引例5.2哥尼斯堡七桥问题94
5.2.1二维数组的定义和初始化95
5.2.2二维数组的操作97
5.3程式设计实例99
5.3.1实例1——折半查找99
5.3.2实例2——合併有序数组100
5.3.3实例3——对角线元素之和101
5.3.4实例4——幻方问题103
习题5104
第6章 程式的组装单元——函式 107
6.1 用户定义的函式——自定义函式 107
引例6.1 欧几里得算法 107
6.1.1 函式定义 108
6.1.2 函式调用 110
6.1.3 函式声明 112
6.2 系统定义的函式——库函式 113
引例6.2 素数判定 114
6.2.1 头档案与档案包含 115
6.2.2 标準输入输出函式 116
6.2.3 随机函式 119
6.2.4 其他常用库函式 120
6.3 变数的作用域 121
引例6.3 鸡兔同笼问题 121
6.3.1 局部变数 122
6.3.2 全局变数 124
6.4 变数的生存期 125
引例6.4 字数统计 125
6.4.1 自动变数 126
6.4.2 静态变数 127
6.5 程式设计实例 128
6.5.1 实例1——三角形的面积 128
6.5.2 实例2——猜数游戏 129
习题6 131
第7章 变数的间接访问——指针 134
7.1 指针 134
引例7.1 答疑教室 134
7.1.1 指针的概念 135
7.1.2 指针变数的定义和初始化 137
7.1.3 指针变数的操作 139
7.1.4 指针所指变数的操作 141
7.2 指针作为函式的参数 141
引例7.2 鸡兔同笼问题 141
7.2.1 值传递方式——函式的输入 143
7.2.2 指针传递方式——函式的输出 144
7.2.3 指针传递方式——函式的输入输出 145
7.3 数组作为函式的参数 146
引例7.3 顺序查找 146
7.3.1 一维数组作为函式的参数 147
7.3.2 二维数组作为函式的参数 149
7.4 程式设计实例 150
7.4.1 实例1——三个整数由小到大输出 150
7.4.2 实例2——哥德巴赫猜想 151
7.4.3 实例3——求一元二次方程的根 152
7.4.4 实例4——简单选择排序 154
习题7 155
第8章 字元数据的组织——字元串 158
引例8.1 恺撒加密 158
8.1 字元串变数的定义和初始化 159
8.1.1 字元数组 160
8.1.2 字元串指针 162
8.2 字元串的操作 162
8.2.1 输入输出操作 162
8.2.2 赋值操作 166
8.2.3 字元串的比较 167
8.2.4 常用字元串库函式 168
8.3 程式设计实例 168
8.3.1 实例1——字数统计 168
8.3.2 实例2——字元串匹配 169
习题8 171
第9章 自定义数据类型 174
9.1 可枚举数据的组织——枚举类型 174
引例9.1 行走机器人 174
9.1.1 枚举类型的定义 176
9.1.2 枚举变数的定义与初始化 176
9.1.3 枚举变数的操作 178
9.2 不同类型数据的组织——结构体类型 179
引例9.2 统计入学成绩 179
9.2.1 结构体类型的定义 180
9.2.2 结构体变数的定义和初始化 181
9.2.3 结构体变数的操作 183
9.3 批量不同类型数据的组织——结构体数组 185
引例9.3 统计入学成绩 186
9.3.1 结构体数组的定义和初始化 187
9.3.2 结构体数组的操作 189
9.4 为自定义数据类型定义别名 190
9.5 程式设计实例 191
9.5.1 实例1——荷兰国旗问题 191
9.5.2 实例2——最近对问题 193
习题9 195
第10章 再谈函式 198
10.1 函式的嵌套调用 198
引例10.1 字元串的循环左移 198
10.1.1 函式——封装的小程式 200
10.1.2 函式的嵌套调用 201
10.2 函式的递归调用 202
引例10.2 求n! 202
10.2.1 递归的定义 203
10.2.2 函式的递归调用 204
10.3 程式设计实例 206
10.3.1 实例1——公共子序列 206
10.3.2 实例2——弦截法求方程的根 208
10.3.3 实例3——汉诺塔问题 210
10.3.4 实例4——折半查找 211
习题10 213
第11章 再谈指针 216
11.1 指针与数组 216
引例11.1 判断回文串 216
11.1.1 用指针访问一维数组 217
11.1.2 用指针访问二维数组 219
11.1.3 指针数组 221
11.2 指针与结构体 222
引例11.2 统计入学成绩 222
11.2.1 指向结构体的指针 223
11.2.2 结构体指针作为函式参数 224
11.3 动态存储分配 225
引例11.3 发纸牌 226
11.3.1 申请和释放存储空间 227
11.3.2 动态数组 230
11.3.3 鍊表 232
11.4 程式设计实例 236
11.4.1 实例1——求最大字元串 236
11.4.2 实例2——进制转换 237
习题11 239
第12章 再谈输入输出 241
引例12.1 统计入学成绩 241
12.1 档案与档案指针 244
12.1.1 文本档案和二进制档案 244
12.1.2 档案缓冲区 245
12.1.3 档案指针 246
12.2 档案的当前位置指针 246
12.2.1 什幺是档案的当前位置指针 246
12.2.2 跟蹤档案的当前位置指针 247
12.2.3 定位档案的当前位置指针 248
12.3 档案的打开与关闭 249
12.3.1 档案的打开 249
12.3.2 档案的关闭 251
12.4 档案的读写操作 251
12.4.1 字元方式档案读写 251
12.4.2 字元串方式档案读写 252
12.4.3 格式化方式档案读写 254
12.4.4 二进制方式档案读写 255
12.5 程式设计实例 256
12.5.1 实例1——档案複製 256
12.5.2 实例2——注册与登录 258
习题12 260
第13章 再谈程式的基本结构 262
13.1 多档案程式 262
13.1.1 多档案程式的构成 262
13.1.2 将源程式档案分解为多个程式档案模组 263
13.2 外部变数和外部函式 264
13.2.1 外部变数 264
13.2.2 外部函式 265
13.3 嵌套包含 267
13.3.1 条件编译 267
13.3.2 保护头档案 270
13.4 程式设计实例——石头、剪子、布游戏 271
习题13 276
第14章 低级程式设计 277
引例14.1 XOR加密 277
14.1 数据表示 278
14.1.1 二进制数与八进制数和十六进制数之间的转换 278
14.1.2 位域 279
14.2 位运算 280
14.2.1 位逻辑运算 281
14.2.2 移位运算 282
14.2.3 补位原则 283
14.2.4 位运算的套用 283
14.3 程式设计实例 284
14.3.1 实例1——快速欧几里得算法 284
14.3.2 实例2——过滤特殊字元 285
习题14 287
第15章 基本的算法设计技术 288
15.1 蛮力法 288
15.1.1 设计思想 288
15.1.2 程式设计实例——起泡排序 289
15.2 穷举法 291
15.2.1 设计思想 291
15.2.2 程式设计实例——假币问题 292
15.3 递推法 295
15.3.1 设计思想 295
15.3.2 程式设计实例——捕鱼知多少 296
15.4 分治法 297
15.4.1 设计思想 297
15.4.2 程式设计实例——数字旋转方阵 299
15.5 动态规划法 302
15.5.1 设计思想 302
15.5.2 程式设计实例——0/1背包问题 303
15.6 贪心法 305
15.6.1 设计思想 305
15.6.2 程式设计实例——埃及分数 306
习题15 308
附录A 标準ASCII码 310
附录B 运算符的优先权和结合性 311
附录C 常用库函式 312
参考文献 317