
C程式设计:方法与实践
《C程式设计:方法与实践》是2017年5月清华大学出版社出版图书,作者是刘喜平、万常选、舒蔚、骆斯文。
基本介绍
- 书名:C程式设计:方法与实践
- 作者:刘喜平、万常选、舒蔚、骆斯文
- ISBN:9787302467151
- 定价:59.50元
- 出版社:清华大学出版社
- 出版时间:2017.05.01
- 开本:32
内容简介
本书是强调程式设计能力培养的教材,以C语言为载体,围绕程式的基本构造、数据组织和构造方法展开。全书共15章。第1章简要介绍程式设计的基本概念、算法与数据结构以及软体开发过程;第2章首先介绍了C语言最核心的核心;第3~6章在这个核心的基础上介绍了C语言的基础: 数据类型、表达式和基本结构,通过学习这些章节的知识,学生可以阅读和编写基本的C程式;第7~13章介绍了函式、常见算法、指针、结构体和档案等语言元素,使用这些语言特徵可以编写出更加複杂的C程式;第14章介绍了常见的两个C程式开发工具以及调试技巧,第15章列出了配套的实验。 本书的主要特点是: 精心组织结构,精选例题,增强实用性,注重从软体开发和系统的角度来介绍程式设计,突出算法思想的培养,达到提高学生程式设计综合素质和能力的目的。 本书可作为高等学校计算机及相关专业学生的程式设计课程教材,也可供程式设计爱好者自学和参考。
作者简介
刘喜平,香港科技大学访问学者、美国罗格斯-新泽西州立大学访问学者,近年来在国内外核心以上期刊发表学术论文40余篇,完成专着2部,正在主持一项国家自然基金项目,主持完成了省级项目3项。参与编写了《资料库系统原理与设计》、《C语言与程式设计方法》等教材4部,其中《资料库系统原理与设计》于2012年11月获批第一批“十二五”普通高等教育本科国家级规划教材。在《计算机教育》等国家级教学期刊上发表教学研究论文4篇;获得了省优秀教学成果一等奖1项,省普通高等学校优秀教材一等奖2项;是《资料库系统及套用》国家精品课程、国家精品资源共享课的核心成员。
万常选,工学博士,教授,博士生导师,国务院政府特殊津贴专家,江西省首批“赣鄱英才555工程——领军人才培养计画”人选,江西省高校中青年学科带头人,江西省“十二五”重点学科“计算机科学与技术”学科带头人。国家精品资源共享课《资料库系统及套用》课程负责人,国家精品课程《资料库系统及套用》课程负责人,国家级特色专业“信息管理与信息系统”负责人,国家级教学团队“管理决策与决策支持教学团队”核心成员(决策支持教学子团队负责人),国家级教学团队“信息系统系列课程教学团队”核心成员。获第六届高等教育国家级教学成果奖二等奖1项,江西省优秀教学成果一等奖2项、二等奖3项,江西省高校优秀教材一等奖2部。主持国家自然科学基金、国家社会科学基金项目多项。出版专着教材多部,其中《资料库系统原理与设计》入选第一批“十二五”普通高等教育本科国家级规划教材。在国内外权威期刊或国际会议发表学术论文30余篇。获江西省高校科技成果奖一等奖3项、二等奖2项,江西省自然科学奖三等奖1项。
图书目录
第1章 程式设计与软体开发
1.1 程式设计的基本概念
1.1.1 程式
1.1.2 程式设计语言
1.1.3 程式设计
1.2 算法与数据结构
1.2.1 算法及其特徵
1.2.2 算法的结构
1.2.3 算法的描述
1.2.4 数据结构
1.3 软体开发
1.3.1 软体
1.3.2 软体工程
1.4 本章小结
习题
第2章 C语言概述
2.1 C语言的发展与特点
2.1.1 C语言的发展
2.1.2 C语言的特点
2.2 一个C程式实例
2.2.1 编写和运行C程式
2.2.2 注释
2.2.3 预处理命令
2.2.4 程式主体
2.3 C语言的字元集与标识符
2.4 数据类型
2.5 常量和变数
2.5.1 常量
2.5.2 变数
2.6 运算符和表达式
2.6.1 运算符
2.6.2 表达式
2.7 输入与输出
2.7.1 输出函式printf
2.7.2 输入函式scanf
2.8 语句
2.8.1 简单语句
2.8.2 语句块
2.8.3 if语句
2.8.4 while语句
2.8.5 for语句
2.9 函式
2.10 编程实践: 代码风格
2.11 本章小结
习题
第3章 数据类型与输入输出
3.1 整型
3.1.1 整数的内部表示
3.1.2 整型常量
3.1.3 整数的输出
3.1.4 整数的输入
3.2 浮点型
3.2.1 浮点常量
3.2.2 浮点数的内部表示
3.2.3 浮点数的输出
3.2.4 浮点数的输入
3.2.5 浮点数的比较和计算
3.3 字元型
3.3.1 字元型数据的内部表示
3.3.2 字元常量和变数
3.3.3 字元输出
3.3.4 字元输入
3.3.5 字元处理
3.4 数组
3.4.1 什幺是数组
3.4.2 数组的内部表示
3.4.3 数组元素的访问
3.4.4 数组的初始化
3.5 字元串
3.5.1 字元串常量
3.5.2 用字元数组处理字元串
3.5.3 字元串的输出
3.5.4 字元串的输入
3.6 文本档案输入与输出
3.6.1 声明FILE *类型的变数
3.6.2 打开档案
3.6.3 关闭档案
3.6.4 读写档案
3.7 变数的进一步讨论
3.7.1 变数的声明与初始化
3.7.2 限定词const
3.8 编程实践: 命名
3.9 本章小结
习题
第4章 运算符与表达式
4.1 运算符与表达式概述
4.1.1 C运算符简介
4.1.2 C表达式简介
4.2 算术运算符和算术表达式
4.2.1 算术运算符
4.2.2 算术表达式
4.2.3 算术表达式的例子
4.3 赋值运算符和赋值表达式
4.3.1 赋值运算符
4.3.2 赋值表达式
4.3.3 複合赋值运算符
4.4 增量减量运算符
4.5 子表达式的求值顺序
4.6 数据类型的转换
4.6.1 隐式类型转换
4.6.2 赋值运算符两侧数据的类型转换
4.6.3 强制类型转换
4.7 逗号运算符和逗号表达式
4.8 本章小结
习题
第5章 分支结构
5.1 关係运算符和关係表达式
5.2 逻辑运算符和逻辑表达式
5.2.1 逻辑运算符
5.2.2 逻辑表达式
5.3 条件运算符和条件表达式
5.4 C语句概述
5.5 if语句
5.6 switch语句
5.7 套用举例
5.8 本章小结
习题
第6章 循环结构与程式设计基本算法
6.1 循环结构与控制语句
6.1.1 while语句
6.1.2 for语句
6.1.3 do-while语句
6.1.4 循环嵌套
6.1.5 流程控制语句(break语句、continue语句和goto语句)
6.2 控制循环的基本方法
6.2.1 通过计数器变数控制循环
6.2.2 通过程式执行的状态控制循环
6.3 穷举算法
6.4 叠代与递推算法
6.4.1 叠代
6.4.2 递推
6.5 程式设计实例
6.6 编程实践: 程式计时
6.7 本章小结
习题
第7章 函式与结构化程式设计
7.1 函式
7.1.1 为什幺要使用函式
7.1.2 函式定义
7.1.3 函式调用
7.1.4 函式原型与函式声明
7.1.5 函式的执行
7.1.6 主调函式与被调函式之间的数据传递
7.1.7 函式设计的思路
7.2 递归调用与递归算法
7.2.1 递归调用的执行过程
7.2.2 递归算法
7.2.3 Hanoi塔问题
7.3 程式的函式分解
7.4 C程式结构
7.4.1 编译预处理命令
7.4.2 全局声明
7.4.3 函式
7.4.4 C程式的逻辑与物理构成
7.5 编程实践: 软体测试
7.6 本章小结
习题
第8章 指针与数组
8.1 指针与指针变数
8.1.1 指针的概念
8.1.2 指针变数的声明与初始化
8.1.3 指针的基本运算
8.2 数组的指针
8.2.1 一维数组的指针
8.2.2 二维数组
8.2.3 二维数组的元素指针和行指针
8.2.4 指向一维数组的指针变数(行指针变数)
8.3 字元指针与字元串
8.3.1 字元串处理函式
8.3.2 指向字元的指针变数处理字元串
8.4 指针作为函式参数
8.4.1 变数的指针作为函式参数
8.4.2 一维数组的指针作为函式参数
8.4.3 二维数组的指针作为函式参数
8.5 返回指针的函式
8.6 指针数组
8.6.1 指针数组的概念及其套用
8.6.2 指针数组作main函式的形参
8.6.3 行指针数组
8.7 编程实践: 实用字元串处理
8.8 本章小结
习题
第9章 C程式运行原理
9.1 一个C程式的运行之旅
9.2 计算机指令的执行过程
9.3 计算机的存储模型
9.4 程式的记忆体布局
9.4.1 概述
9.4.2 栈
9.4.3 堆
9.4.4 执行档映像
9.5 变数的存储类型
9.5.1 作用域
9.5.2 存储期限(生存期)
9.5.3 连结
9.5.4 变数分类
9.6 编程实践: 程式设计与作业系统
9.7 本章小结
习题
第10章 複杂问题的求解算法
10.1 分治法
10.1.1 分治法的基本思想
10.1.2 折半查找
10.1.3 循环赛赛程安排
10.2 贪心算法
10.2.1 贪心算法的基本概念
10.2.2 活动安排问题
10.2.3 背包问题
10.3 动态规划算法
10.3.1 动态规划介绍
10.3.2 最长公共子序列问题
10.3.3 0-1背包问题
10.3.4 动态规划算法总结
10.4 回溯法
10.4.1 回溯法的基本思想
10.4.2 n皇后问题
10.4.3 0-1背包问题
10.4.4 回溯法总结
10.5 本章小结
习题
第11章 结构体、联合共用体与枚举类型
11.1 数据类型的再讨论
11.1.1 数据类型与事物属性
11.1.2 数据类型的定义
11.2 结构体
11.2.1 结构体类型的定义
11.2.2 结构体变数的声明与存储
11.2.3 结构体变数的引用与初始化
11.3 结构体数组
11.4 结构体指针
11.5 结构体与函式
11.5.1 函式的结构体类型参数
11.5.2 结构体类型的函式
11.6 结构体嵌套
11.7 线性鍊表
11.7.1 线性鍊表概述
11.7.2 C语言实现线性鍊表
11.8 联合共用体
11.9 枚举类型
11.9.1 枚举类型定义与变数声明
11.9.2 枚举类型的使用方法
11.9.3 类型名重新定义typedef
11.10 编程实践: 中文处理
11.11 本章小结
习题
第12章 档案
12.1 C档案概述
12.1.1 C档案的基本概念
12.1.2 文本档案与二进制档案
12.1.3 档案的处理方法
12.2 流与档案类型的指针
12.3 档案操作
12.3.1 档案的打开
12.3.2 档案的关闭
12.3.3 字元方式读写档案
12.3.4 数据块方式读写档案
12.4 档案的定位与随机读写
12.4.1 档案的定位
12.4.2 随机读写
12.5 档案操作的出错检测
12.6 档案读写操作套用实例
12.6.1 档案中数据的修改
12.6.2 档案中数据的删除
12.6.3 向档案中追加或插入数据
12.7 编程实践: C与C++
12.8 本章小结
习题
第13章 指针的进一步讨论与位运算
13.1 多级指针
13.1.1 指向指针的指针与指向行指针的指针
13.1.2 指向指针的指针数组与指向行指针的指针数组
13.2 函式与指针
13.2.1 指向函式的指针变数
13.2.2 指向函式的指针数组
13.2.3 指向返回指针的函式的指针变数
13.2.4 指向返回指针的函式的指针数组
13.2.5 返回行指针的函式
13.2.6 指向返回行指针的函式的指针变数
13.2.7 指向返回行指针的函式的指针数组
13.3 位运算
13.3.1 二进制位运算概述
13.3.2 位运算符
13.3.3 位段
13.4 本章小结
习题
第14章 C程式开发环境与调试
14.1 Visual Studio Community 2015 的安装与使用
14.1.1 Visual Studio Community 2015 简介
14.1.2 Visual Studio Community 2015 的安装
14.1.3 Visual Studio Community 2015 中编写C程式
14.1.4 Visual Studio Community 2015 中运行C程式
14.1.5 Visual Studio Community 2015 中调试C程式
14.2 Code::Blocks的安装与使用
14.2.1 Code::Blocks简介
14.2.2 Code::Blocks的安装
14.2.3 在Code::Blocks中编写程式
14.2.4 在Code::Blocks中运行和调试程式
第15章 C语言上机实验
15.1 实验概述
15.1.1 实验目的
15.1.2 实验步骤
15.2 实验项目
15.2.1 实验1: C程式调试与输入输出
15.2.2 实验2: 运算符、表达式及简单C程式设计
15.2.3 实验3: 分支及循环结构
15.2.4 实验4: 循环程式设计
15.2.5 实验5: 函式程式设计
15.2.6 实验6: 函式设计
15.2.7 实验7: 数组、指针的套用
15.2.8 实验8: 二维数组的套用
15.2.9 实验9: 结构体与档案
附录 部分字元与ASCII代码对照表
参考文献
1.1 程式设计的基本概念
1.1.1 程式
1.1.2 程式设计语言
1.1.3 程式设计
1.2 算法与数据结构
1.2.1 算法及其特徵
1.2.2 算法的结构
1.2.3 算法的描述
1.2.4 数据结构
1.3 软体开发
1.3.1 软体
1.3.2 软体工程
1.4 本章小结
习题
第2章 C语言概述
2.1 C语言的发展与特点
2.1.1 C语言的发展
2.1.2 C语言的特点
2.2 一个C程式实例
2.2.1 编写和运行C程式
2.2.2 注释
2.2.3 预处理命令
2.2.4 程式主体
2.3 C语言的字元集与标识符
2.4 数据类型
2.5 常量和变数
2.5.1 常量
2.5.2 变数
2.6 运算符和表达式
2.6.1 运算符
2.6.2 表达式
2.7 输入与输出
2.7.1 输出函式printf
2.7.2 输入函式scanf
2.8 语句
2.8.1 简单语句
2.8.2 语句块
2.8.3 if语句
2.8.4 while语句
2.8.5 for语句
2.9 函式
2.10 编程实践: 代码风格
2.11 本章小结
习题
第3章 数据类型与输入输出
3.1 整型
3.1.1 整数的内部表示
3.1.2 整型常量
3.1.3 整数的输出
3.1.4 整数的输入
3.2 浮点型
3.2.1 浮点常量
3.2.2 浮点数的内部表示
3.2.3 浮点数的输出
3.2.4 浮点数的输入
3.2.5 浮点数的比较和计算
3.3 字元型
3.3.1 字元型数据的内部表示
3.3.2 字元常量和变数
3.3.3 字元输出
3.3.4 字元输入
3.3.5 字元处理
3.4 数组
3.4.1 什幺是数组
3.4.2 数组的内部表示
3.4.3 数组元素的访问
3.4.4 数组的初始化
3.5 字元串
3.5.1 字元串常量
3.5.2 用字元数组处理字元串
3.5.3 字元串的输出
3.5.4 字元串的输入
3.6 文本档案输入与输出
3.6.1 声明FILE *类型的变数
3.6.2 打开档案
3.6.3 关闭档案
3.6.4 读写档案
3.7 变数的进一步讨论
3.7.1 变数的声明与初始化
3.7.2 限定词const
3.8 编程实践: 命名
3.9 本章小结
习题
第4章 运算符与表达式
4.1 运算符与表达式概述
4.1.1 C运算符简介
4.1.2 C表达式简介
4.2 算术运算符和算术表达式
4.2.1 算术运算符
4.2.2 算术表达式
4.2.3 算术表达式的例子
4.3 赋值运算符和赋值表达式
4.3.1 赋值运算符
4.3.2 赋值表达式
4.3.3 複合赋值运算符
4.4 增量减量运算符
4.5 子表达式的求值顺序
4.6 数据类型的转换
4.6.1 隐式类型转换
4.6.2 赋值运算符两侧数据的类型转换
4.6.3 强制类型转换
4.7 逗号运算符和逗号表达式
4.8 本章小结
习题
第5章 分支结构
5.1 关係运算符和关係表达式
5.2 逻辑运算符和逻辑表达式
5.2.1 逻辑运算符
5.2.2 逻辑表达式
5.3 条件运算符和条件表达式
5.4 C语句概述
5.5 if语句
5.6 switch语句
5.7 套用举例
5.8 本章小结
习题
第6章 循环结构与程式设计基本算法
6.1 循环结构与控制语句
6.1.1 while语句
6.1.2 for语句
6.1.3 do-while语句
6.1.4 循环嵌套
6.1.5 流程控制语句(break语句、continue语句和goto语句)
6.2 控制循环的基本方法
6.2.1 通过计数器变数控制循环
6.2.2 通过程式执行的状态控制循环
6.3 穷举算法
6.4 叠代与递推算法
6.4.1 叠代
6.4.2 递推
6.5 程式设计实例
6.6 编程实践: 程式计时
6.7 本章小结
习题
第7章 函式与结构化程式设计
7.1 函式
7.1.1 为什幺要使用函式
7.1.2 函式定义
7.1.3 函式调用
7.1.4 函式原型与函式声明
7.1.5 函式的执行
7.1.6 主调函式与被调函式之间的数据传递
7.1.7 函式设计的思路
7.2 递归调用与递归算法
7.2.1 递归调用的执行过程
7.2.2 递归算法
7.2.3 Hanoi塔问题
7.3 程式的函式分解
7.4 C程式结构
7.4.1 编译预处理命令
7.4.2 全局声明
7.4.3 函式
7.4.4 C程式的逻辑与物理构成
7.5 编程实践: 软体测试
7.6 本章小结
习题
第8章 指针与数组
8.1 指针与指针变数
8.1.1 指针的概念
8.1.2 指针变数的声明与初始化
8.1.3 指针的基本运算
8.2 数组的指针
8.2.1 一维数组的指针
8.2.2 二维数组
8.2.3 二维数组的元素指针和行指针
8.2.4 指向一维数组的指针变数(行指针变数)
8.3 字元指针与字元串
8.3.1 字元串处理函式
8.3.2 指向字元的指针变数处理字元串
8.4 指针作为函式参数
8.4.1 变数的指针作为函式参数
8.4.2 一维数组的指针作为函式参数
8.4.3 二维数组的指针作为函式参数
8.5 返回指针的函式
8.6 指针数组
8.6.1 指针数组的概念及其套用
8.6.2 指针数组作main函式的形参
8.6.3 行指针数组
8.7 编程实践: 实用字元串处理
8.8 本章小结
习题
第9章 C程式运行原理
9.1 一个C程式的运行之旅
9.2 计算机指令的执行过程
9.3 计算机的存储模型
9.4 程式的记忆体布局
9.4.1 概述
9.4.2 栈
9.4.3 堆
9.4.4 执行档映像
9.5 变数的存储类型
9.5.1 作用域
9.5.2 存储期限(生存期)
9.5.3 连结
9.5.4 变数分类
9.6 编程实践: 程式设计与作业系统
9.7 本章小结
习题
第10章 複杂问题的求解算法
10.1 分治法
10.1.1 分治法的基本思想
10.1.2 折半查找
10.1.3 循环赛赛程安排
10.2 贪心算法
10.2.1 贪心算法的基本概念
10.2.2 活动安排问题
10.2.3 背包问题
10.3 动态规划算法
10.3.1 动态规划介绍
10.3.2 最长公共子序列问题
10.3.3 0-1背包问题
10.3.4 动态规划算法总结
10.4 回溯法
10.4.1 回溯法的基本思想
10.4.2 n皇后问题
10.4.3 0-1背包问题
10.4.4 回溯法总结
10.5 本章小结
习题
第11章 结构体、联合共用体与枚举类型
11.1 数据类型的再讨论
11.1.1 数据类型与事物属性
11.1.2 数据类型的定义
11.2 结构体
11.2.1 结构体类型的定义
11.2.2 结构体变数的声明与存储
11.2.3 结构体变数的引用与初始化
11.3 结构体数组
11.4 结构体指针
11.5 结构体与函式
11.5.1 函式的结构体类型参数
11.5.2 结构体类型的函式
11.6 结构体嵌套
11.7 线性鍊表
11.7.1 线性鍊表概述
11.7.2 C语言实现线性鍊表
11.8 联合共用体
11.9 枚举类型
11.9.1 枚举类型定义与变数声明
11.9.2 枚举类型的使用方法
11.9.3 类型名重新定义typedef
11.10 编程实践: 中文处理
11.11 本章小结
习题
第12章 档案
12.1 C档案概述
12.1.1 C档案的基本概念
12.1.2 文本档案与二进制档案
12.1.3 档案的处理方法
12.2 流与档案类型的指针
12.3 档案操作
12.3.1 档案的打开
12.3.2 档案的关闭
12.3.3 字元方式读写档案
12.3.4 数据块方式读写档案
12.4 档案的定位与随机读写
12.4.1 档案的定位
12.4.2 随机读写
12.5 档案操作的出错检测
12.6 档案读写操作套用实例
12.6.1 档案中数据的修改
12.6.2 档案中数据的删除
12.6.3 向档案中追加或插入数据
12.7 编程实践: C与C++
12.8 本章小结
习题
第13章 指针的进一步讨论与位运算
13.1 多级指针
13.1.1 指向指针的指针与指向行指针的指针
13.1.2 指向指针的指针数组与指向行指针的指针数组
13.2 函式与指针
13.2.1 指向函式的指针变数
13.2.2 指向函式的指针数组
13.2.3 指向返回指针的函式的指针变数
13.2.4 指向返回指针的函式的指针数组
13.2.5 返回行指针的函式
13.2.6 指向返回行指针的函式的指针变数
13.2.7 指向返回行指针的函式的指针数组
13.3 位运算
13.3.1 二进制位运算概述
13.3.2 位运算符
13.3.3 位段
13.4 本章小结
习题
第14章 C程式开发环境与调试
14.1 Visual Studio Community 2015 的安装与使用
14.1.1 Visual Studio Community 2015 简介
14.1.2 Visual Studio Community 2015 的安装
14.1.3 Visual Studio Community 2015 中编写C程式
14.1.4 Visual Studio Community 2015 中运行C程式
14.1.5 Visual Studio Community 2015 中调试C程式
14.2 Code::Blocks的安装与使用
14.2.1 Code::Blocks简介
14.2.2 Code::Blocks的安装
14.2.3 在Code::Blocks中编写程式
14.2.4 在Code::Blocks中运行和调试程式
第15章 C语言上机实验
15.1 实验概述
15.1.1 实验目的
15.1.2 实验步骤
15.2 实验项目
15.2.1 实验1: C程式调试与输入输出
15.2.2 实验2: 运算符、表达式及简单C程式设计
15.2.3 实验3: 分支及循环结构
15.2.4 实验4: 循环程式设计
15.2.5 实验5: 函式程式设计
15.2.6 实验6: 函式设计
15.2.7 实验7: 数组、指针的套用
15.2.8 实验8: 二维数组的套用
15.2.9 实验9: 结构体与档案
附录 部分字元与ASCII代码对照表
参考文献