程序设计基础 从问题到程序 第2版
作者:胡明,王红梅著
出版时间:2016年版
内容简介
胡明、王红梅编写的《程序设计基础:从问题到程序(第2版高等学校计算机基础教育规划教材)》以C 语言为工具,以程序设计过程为主线,结合实际问题,基于计算思维,通过“问题→想法→算法→程序” 的问题求解过程,带领读者分析问题、构造算法、设计程序,在潜移默化中掌握程序设计语言的基本知识,掌握程序设计的一般过程和基本方法,提高计算思维能力以及应用程序设计语言解决实际问题的能力。本书适用于程序设计的初学者,主要面向没有任何编程知识和编程经历的读者。本书遵循初学者的认知规律和知识基础,科学安排知识单元之间的拓扑关系,概念清晰,实例丰富,深入浅出,是程序设计初学者的理想教材。
目录
第1章 绪论
1.1 程序、程序设计与程序设计语言
1.1.1 程序与程序设计
1.1.2 程序设计语言
1.2 程序的基本构成
1.2.1 程序示例
1.2.2 基本字符集
1.2.3 词法单位
1.2.4 语法单位
1.2.5 程序
1.3 程序的上机过程
1.3.1 编程环境
1.3.2 程序编辑
1.3.3 程序编译
1.3.4 程序连接
1.3.5 运行调试
1.4 程序风格
1.4.1 标识符的命名规则
1.4.2 注释
1.4.3 缩进
1.4.4 行文格式
1.5 问题求解与程序设计
1.5.1 程序设计的一般过程
1.5.2 程序设计的核心——算法
1.5.3 程序设计实例——鸡兔同笼问题
习题
第2章 数据的存储表示
引例2.1 计算圆的面积
2.1 数据的存储
2.1.1 二进制
2.1.2 内存
2.2 基本数据类型
2.2.1 整型
2.2.2 实型
2.2.3 字符型
2.2.4 逻辑型
2.3 常量
2.3.1 字面常量
2.3.2 符号常量
2.4 变量
2.4.1 变量的概念
2.4.2 变量的定义和初始化
2.4.3 变量的赋值
2.5 程序设计实例
2.5.1 实例1——温度转换
2.5.2 实例2——计算本息和
习题
第3章 数据的运算处理
3.1 算术运算
引例3.1 求平均值
3.1.1 算术运算
3.1.2 运算符的优先级和结合性
3.2 逻辑运算
引例3.2 判断闰年
3.2.1 关系运算
3.2.2 逻辑运算
3.3 赋值运算
3.3.1 赋值运算
3.3.2 自增/自减运算
3.4 其他运算
3.4.1 逗号运算
3.4.2 取长度运算
3.4.3 条件运算
3.5 运算对象的类型转换
3.5.1 自动转换
3.5.2 强制转换
3.6 程序设计实例
3.6.1 实例1——通用产品代码
3.6.2 实例2——疯狂赛车
习题
第4章 程序的基本控制结构
4.1 顺序结构
引例4.1 整数的逆值
4.1.1 简单的顺序结构
4.1.2 复合语句
4.2 选择结构
引例4.2 水仙花数
4.2.1 逻辑值控制的选择结构
4.2.2 算术值控制的选择结构
4.3 循环结构
引例4.3 欧几里得算法
4.3.1 当型循环
4.3.2 直到型循环
4.3.3 计数型循环
4.3.4 循环结构的比较
4.3.5 循环结构的嵌套
4.4 其他控制语句
引例4.4 素数判定
4.4.1 break语句
4.4.2 continue语句
4.5 程序设计实例
4.5.1 实例1——将三个整数由小到大输出
4.5.2 实例2——今年已经过去多久了
4.5.3 实例3——百元买百鸡问题
4.5.4 实例4——哥德巴赫猜想
习题
第5章 批量同类型数据的组织——数组
5.1 一维数组
引例5.1 舞林大会
5.1.1 一维数组的定义和初始化
5.1.2 一维数组的操作
5.2 二维数组
引例5.2 哥尼斯堡七桥问题
5.2.1 二维数组的定义和初始化
5.2.2 二维数组的操作
5.3 程序设计实例
5.3.1 实例1——折半查找
5.3.2 实例2——合并有序数组
5.3.3 实例3——对角线元素之和
5.3.4 实例4——幻方问题
习题
第6章 程序的组装单元——函数
6.1 用户定义的函数——自定义函数
引例6.1 欧几里得算法
6.1.1 函数定义
6.1.2 函数调用
6.1.3 函数声明
6.2 系统定义的函数——库函数
引例6.2 素数判定
6.2.1 头文件与文件包含
6.2.2 标准输入输出函数
6.2.3 随机函数
6.2.4 其他常用库函数
6.3 变量的作用域
引例6.3 鸡兔同笼问题
6.3.1 局部变量
6.3.2 全局变量
6.4 变量的生存期
引例6.4 字数统计
6.4.1 自动变量
6.4.2 静态变量
6.5 程序设计实例
6.5.1 实例1——三角形的面积
6.5.2 实例2——猜数游戏
习题
第7章 变量的间接访问——指针
7.1 指针
引例7.1 答疑教室
7.1.1 指针的概念
7.1.2 指针变量的定义和初始化
7.1.3 指针变量的操作
7.1.4 指针所指变量的操作
7.2 指针作为函数的参数
引例7.2 鸡兔同笼问题
7.2.1 值传递方式——函数的输入
7.2.2 指针传递方式——函数的输出
7.2.3 指针传递方式——函数的输入输出
7.3 数组作为函数的参数
引例7.3 顺序查找
7.3.1 一维数组作为函数的参数
7.3.2 二维数组作为函数的参数
7.4 程序设计实例
7.4.1 实例1——三个整数由小到大输出
7.4.2 实例2——哥德巴赫猜想
7.4.3 实例3——求一元二次方程的根
7.4.4 实例4——简单选择排序
习题
第8章 字符数据的组织——字符串
引例8.1 恺撒加密
8.1 字符串变量的定义和初始化
8.1.1 字符数组
8.1.2 字符串指针
8.2 字符串的操作
8.2.1 输入输出操作
8.2.2 赋值操作
8.2.3 字符串的比较
8.2.4 常用字符串库函数
8.3 程序设计实例
8.3.1 实例1——字数统计
8.3.2 实例2——字符串匹配
习题
第9章 自定义数据类型
9.1 可枚举数据的组织——枚举类型
引例9.1 行走机器人
9.1.1 枚举类型的定义
9.1.2 枚举变量的定义与初始化
9.1.3 枚举变量的操作
9.2 不同类型数据的组织——结构体类型
引例9.2 统计入学成绩
9.2.1 结构体类型的定义
9.2.2 结构体变量的定义和初始化
9.2.3 结构体变量的操作
9.3 批量不同类型数据的组织——结构体数组
引例9.3 统计入学成绩
9.3.1 结构体数组的定义和初始化
9.3.2 结构体数组的操作
9.4 为自定义数据类型定义别名
9.5 程序设计实例
9.5.1 实例1——荷兰国旗问题
9.5.2 实例2——最近对问题
习题
第10章 再谈函数
10.1 函数的嵌套调用
引例 10.1 字符串的循环左移
10.1.1 函数——封装的小程序
10.1.2 函数的嵌套调用
10.2 函数的递归调用
引例 10.2 求
10.2.1 递归的定义
10.2.2 函数的递归调用
10.3 程序设计实例
10.3.1 实例1——公共子序列
10.3.2 实例2——弦截法求方程的根
10.3.3 实例3——汉诺塔问题
10.3.4 实例4——折半查找
习题
第11章 再谈指针
11.1 指针与数组
引例11.1 判断回文串
11.1.1 用指针访问一维数组
11.1.2 用指针访问二维数组
11.1.3 指针数组
11.2 指针与结构体
引例11.2 统计入学成绩
11.2.1 指向结构体的指针
11.2.2 结构体指针作为函数参数
11.3 动态存储分配
引例11.3 发纸牌
11.3.1 申请和释放存储空间
11.3.2 动态数组
11.3.3 链表
11.4 程序设计实例
11.4.1 实例1——求最大字符串
11.4.2 实例2——进制转换
习题
第12章 再谈输入输出
引例12.1 统计入学成绩
12.1 文件与文件指针
12.1.1 文本文件和二进制文件
12.1.2 文件缓冲区
12.1.3 文件指针
12.2 文件的当前位置指针
12.2.1 什么是文件的当前位置指针
12.2.2 跟踪文件的当前位置指针
12.2.3 定位文件的当前位置指针
12.3 文件的打开与关闭
12.3.1 文件的打开
12.3.2 文件的关闭
12.4 文件的读写操作
12.4.1 字符方式文件读写
12.4.2 字符串方式文件读写
12.4.3 格式化方式文件读写
12.4.4 二进制方式文件读写
12.5 程序设计实例
12.5.1 实例1——文件复制
12.5.2 实例2——注册与登录
习题
第13章 再谈程序的基本结构
13.1 多文件程序
13.1.1 多文件程序的构成
13.1.2 将源程序文件分解为多个程序文件模块
13.2 外部变量和外部函数
13.2.1 外部变量
13.2.2 外部函数
13.3 嵌套包含
13.3.1 条件编译
13.3.2 保护头文件
13.4 程序设计实例——石头、剪子、布游戏
习题
第14章 低级程序设计
引例14.1 XOR加密
14.1 数据表示
14.1.1 二进制数与八进制数和十六进制数之间的转换
14.1.2 位域
14.2 位运算
14.2.1 位逻辑运算
14.2.2 移位运算
14.2.3 补位原则
14.2.4 位运算的应用
14.3 程序设计实例
14.3.1 实例1——快速欧几里得算法
14.3.2 实例2——过滤特殊字符
习题
第15章 基本的算法设计技术
15.1 蛮力法
15.1.1 设计思想
15.1.2 程序设计实例——起泡排序
15.2 穷举法
15.2.1 设计思想
15.2.2 程序设计实例——假币问题
15.3 递推法
15.3.1 设计思想
15.3.2 程序设计实例——捕鱼知多少
15.4 分治法
15.4.1 设计思想
15.4.2 程序设计实例——数字旋转方阵
15.5 动态规划法
15.5.1 设计思想
15.5.2 程序设计实例——0/1背包问题
15.6 贪心法
15.6.1 设计思想
15.6.2 程序设计实例——埃及分数
习题
附录A 标准ASCII码
附录B 运算符的优先级和结合性
附录C 常用库函数
参考文献