程序设计基础(C语言)(第2版) / 21世纪高等学校计算机专业实用规划教材
¥45.00定价
作者: 张先伟、马新娟等
出版时间:2016年8月
出版社:清华大学出版社
- 清华大学出版社
- 9787302440864
- 2-1
- 184295
- 16开
- 2016年8月
- 工学
- 软件工程
- TP312
- 计算机
- 本专科、高职高专
内容简介
本书重点介绍在C语言环境下编写程序的思路与方法。全书以程序设计的基本思想与方法作为主要结构,介绍了程序的基本结构组织、批量数据的组织方式与处理技巧,引入了递推、递归、动态规划、贪心等常用的算法设计方法应用案例,注重强调了程序设计中设计方法与动手实践。本书可作为高等院校相关专业教材,亦可供从事计算机相关领域的科研人员参考自学。
目录
第1章程序设计引论
1.1计算机程序与计算机语言
1.1.1计算机程序
1.1.2计算机内存
1.1.3计算机语言
1.1.4C语言简介
1.2简单的C程序构成
1.2.1最简单的C语言程序举例
1.2.2C程序的结构
1.3C程序设计的基本步骤
1.3.1需求分析
1.3.2详细设计
1.3.3编辑程序
1.3.4编译与链接
1.3.5运行与调试
1.4C程序文件的创建、编译与运行
1.4.1CodeBlocks下程序文件的创建、编译与运行
1.4.2Visual C 6.0下程序文件的创建、编译与运行
1.5本章小结
第2章算法设计基础
2.1什么是算法
2.1.1日常生活中的算法
2.1.2计算机算法的分类
2.1.3简单算法举例
2.2算法的特征
2.3算法的表示方法
2.3.1自然语言表示算法
2.3.2传统流程图表示算法
2.3.3三种基本结构
2.3.4用NS流程图表示算法
2.3.5其他表示算法的方法
2.4程序设计中常用算法
2.4.1迭代法
2.4.2穷举搜索法
2.4.3递推法
2.4.4递归
2.4.5回溯法
2.4.6贪心法
2.4.7分治法
2.4.8动态规划法
2.5本章小结
第3章数据类型基础
3.1数据在计算机中的存储方式
3.1.1二进制
3.1.2位与字节
3.1.3数据的存储方式
3.2常量与变量
3.2.1基本概念
3.2.2定义常量的名字(预处理命令#define)
3.2.3变量的声明和赋值
3.2.4常量的分类
3.3基本数据类型
3.3.1整型
3.3.2实型
3.3.3字符型
3.3.4sizeof()求类型大小
3.4数据类型转换
3.4.1自动转换
3.4.2强制类型转换
3.5运算符与表达式
3.5.1算术运算符
3.5.2自增运算符和自减运算符
3.5.3算术表达式
3.5.4运算符的优先级和结合性
3.6本章小结
第4章顺序控制结构与数据的输入输出
4.1顺序结构
4.1.1C语句综述
4.1.2赋值运算符和赋值表达式
4.1.3顺序结构实例
4.2数据的输入输出及实现
4.3字符数据的输入输出
4.3.1putchar函数
4.3.2getchar函数
4.4格式化输入输出
4.4.1格式输出printf函数
4.4.2格式输入scanf函数
4.5本章小结
第5章分支控制结构
5.1关系运算符和关系表达式
5.2逻辑运算符和逻辑表达式
5.3if语句
5.3.1if语句的三种形式
5.3.2if语句的嵌套
5.3.3条件运算符与条件表达式
5.3.4if语句中的复合语句
5.4switch语句
5.5本章小结
第6章循环控制结构
6.1循环控制结构
6.2while()语句
6.2.1while语句的一般形式
6.2.2如何终止while循环
6.2.3while语法要点
6.2.4计数循环与不确定循环
6.3do…while语句——退出条件循环
6.3.1do while的一般形式
6.3.2do while语句的使用
6.3.3do while语句的语法要点
6.4逗号运算符和逗号表达式
6.5for语句
6.5.1for语句的一般形式
6.5.2for语句的灵活运用
6.5.3逗号表达式在for语句中的使用
6.6空语句在循环中的使用
6.7循环语句的选择
6.8循环嵌套
6.9break和continue语句
6.10本章小结
第7章函数
7.1函数概述
7.1.1什么是函数
7.1.2为什么使用函数
7.1.3函数的特点
7.1.4函数的分类
7.2函数定义和调用
7.2.1函数定义
7.2.2函数调用
7.2.3函数的声明
7.2.4return语句
7.3嵌套调用与递归调用
7.3.1嵌套调用
7.3.2递归调用
7.4变量与函数
7.4.1变量的作用域和存储类别
7.4.2局部变量的作用域和存储类别
7.4.3全局变量的作用域和存储类别
7.5随机数函数
7.6本章小结
第8章数组
8.1一维数组的定义、引用与初始化
8.1.1一维数组的定义
8.1.2一维数组元素的引用
8.1.3一维数组的初始化
8.2一维数组的应用
8.2.1Fibonacci数列
8.2.2统计问题
8.2.3排序问题
8.2.4查找问题
8.2.5逆置与移位
8.2.6元素删除
8.3二维数组
8.3.1二维数组的定义
8.3.2二维数组元素的引用
8.3.3二维数组的初始化
8.3.4二维数组程序举例
8.4数组与函数
8.4.1数组元素作函数实参
8.4.2数组名作为函数参数
8.5本章小结
第9章指针
9.1地址与指针
9.1.1变量、数组、函数与地址
9.1.2变量的地址和变量的值
9.1.3变量的访问方式
9.1.4指针和指针变量
9.2指针变量
9.2.1指针变量的定义
9.2.2指针变量的引用
9.2.3指针变量作为函数参数
9.3指向数组的指针变量
9.3.1指向数组元素的指针
9.3.2通过指针引用数组元素
9.3.3指向数组的指针变量作为函数参数
9.3.4指向多维数组的指针变量
9.4函数指针变量
9.4.1函数指针与指向函数的指针变量
9.4.2用函数指针变量调用函数
9.4.3用指向函数的指针变量作函数参数
9.5返回指针值的函数
9.6指针数组和指向指针的指针
9.6.1指针数组的概念
9.6.2指向指针的指针
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.2.4字符串数组
10.3字符串的输入输出
10.3.1用gets函数和puts函数输入输出字符串
10.3.2用scanf函数和printf函数输入输出字符串
10.4字符串处理函数
10.5字符指针与字符数组的区别
10.6程序举例
10.7本章小结
第11章结构体、共用体和枚举
11.1示例问题: 学生成绩管理的例子
11.2结构体
11.2.1结构体类型的定义
11.2.2结构体类型变量的定义
11.2.3结构体类型变量的引用与赋值
11.2.4结构体变量的初始化
11.2.5结构体类型数组
11.2.6结构体类型指针变量
11.2.7结构体类型指针变量作函数参数
11.3共用体
11.3.1共用体类型的概念
11.3.2共用体类型变量的引用
11.3.3共用体类型数据的特点
11.4枚举
11.4.1枚举类型的概念和定义
11.4.2枚举类型变量的赋值和使用
11.5利用typedef自定义类型
11.6本章小结
第12章文件
12.1文件概述
12.1.1文件的概念
12.1.2文件的分类
12.1.3标准文件I/O
12.2文件指针
12.3文件的打开与关闭
12.3.1文件打开函数(fopen)与程序结束函数(exit)
12.3.2文件关闭函数(fclose)
12.4文本文件的读写
12.4.1字符读写函数(fgetc和fputc)
12.4.2字符串读写函数(fgets和fputs)
12.4.3格式化读写函数(fscanf和fprintf)
12.5二进制文件的读写
12.5.1二进制模式与文本模式的区别
12.5.2数据块读写函数(fread和fwtrite)
12.6文件操作的其他函数
12.6.1判断文件是否结束函数(feof)
12.6.2文件内部指针定位
12.6.3ftell函数
12.6.4int fflush()函数
12.7综合示例
12.8本章小结
第13章链表
13.1动态内存分配
13.1.1C程序的内存划分
13.1.2内存分配方式
13.1.3动态内存分配函数
13.2单链表概述
13.2.1结点的结构
13.2.2单链表的结构
13.3单链表结点的基本操作
13.3.1单链表结点的查找
13.3.2单链表结点的插入
13.3.3单链表结点的删除
13.4单链表的建立
13.4.1逆序建链表
13.4.2顺序建链表
13.5单链表的应用
13.5.1单链表的逆置
13.5.2单链表的归并
13.5.3单链表的拆分
13.6循环链表与约瑟夫环问题
13.6.1循环链表
13.6.2约瑟夫环问题
13.7本章小结
第14章递推与递归
14.1递推
14.1.1递推思想
14.1.2求解递推关系的方法
14.1.3递推关系的建立
14.2递推设计实例
14.2.1简单Hanoi塔问题
14.2.2捕鱼问题
14.2.3Fibonacci类问题
14.2.4错排公式
14.2.5马踏过河卒
14.3递归
14.3.1递归的定义
14.3.2递归的思想
14.4递归设计实例
14.4.1青蛙过河问题
14.4.2快速排序问题
14.4.3第k小的数
14.4.4全排列问题
14.4.5八皇后问题
14.5递归的效率
14.6本章小结
第15章贪心法与动态规划法
15.1贪心法
15.1.1贪心法的思想
15.1.2贪心法的实现过程
15.1.3贪心法的基本要素
15.1.4贪心法的注意事项
15.2贪心法实例
15.2.1删数问题
15.2.2活动选择问题
15.2.3区间覆盖问题
15.2.4贪心法解题的一般步骤
15.3动态规划
15.3.1什么是动态规划
15.3.2引入动态规划的意义
15.3.3动态规划的特征
15.3.4动态规划算法的基本步骤
15.4动态规划实例
15.4.1简单最短路径问题
15.4.2最长公共子序列问题
15.4.3最长上升子序列问题
15.5本章小结