在本书第一版(1992 年出版)和第二版(1998 年出版)已经发行超过100 万册之后,根据国家“十一五”教材规划,著名计算机教育家谭浩强教授和张基温教授又通力合作,全面修订,推出了本书第3 版。第3 版保留了深入浅出、易学易懂、取舍合理、适宜教学的特点,并进一步充实了内容,在叙述方面更加详尽和深入。本书是以C 语言的最新标准C99 为依据编写的。
学习程序设计必须重视实践环节,多读程序,多编写程序,多上机实践。本书提供了大量典型的例题分析和用于自测的丰富习题;配有《C 语言习题集与上机指导(第3 版)》和教学课件,为教与学创造了一个立体的环境。
本书可以作为高等学校计算机及相关专业学生学习C 语言程序设计的教材,也可作为参加有关考试和自学的参考书。
本书配套教学资源可以在高等教育出版社高等理工教学资源网下载,网址为http://www.hep-st.com.cn。
目录
- 前辅文
- 第1 章 C 语言程序设计的概念
- 1.1 程序与程序设计语言
- 1.1.1 计算机与程序
- 1.1.2 计算机程序设计语言
- 1.1.3 高级语言程序的开发过程
- 1.2 C 语言及其标准
- 1.2.1 C 语言的出现
- 1.2.2 C 语言的标准
- 1.3 C 语言程序概要
- 1.3.1 函数
- 1.3.2 语句
- 1.3.3 名字与声明
- 1.3.4 变量及其赋值
- 1.3.5 算术运算
- 1.3.6 赋值类运算符的副作用及限制
- 习题一
- 第2 章 基本数据类型
- 2.1 基本数据类型的特征
- 2.1.1 数值的定点表示与浮点表示
- 2.1.2 整数的有符号类型与无符号类型
- 2.1.3 类型宽度与取值范围
- 2.2 数据常量
- 2.2.1 整型常量
- 2.2.2 字符类型及其常量
- 2.2.3 实型常量
- 2.2.4 符号常量
- 2.3 数据类型转换
- 2.3.1 几个概念
- 2.3.2 数据类型的隐式转换
- 2.3.3 数据类型的显式转换
- 2.4 数据的控制台输入与输出
- 2.4.1 格式化输出函数printf( )
- 2.4.2 格式化输入函数scanf( )
- 2.4.3 字符输入/输出函数getchar( )与putchar( )
- 习题二
- 第3 章 C 语言程序的流程控制
- 3.1 算法
- 3.1.1 算法的组成要素与基本性质
- 3.1.2 算法描述工具
- 3.1.3 自顶向下、逐步细化的算法设计过程
- 3.2 判断
- 3.2.1 命题的“真”、“假”与C 语言中的逻辑值
- 3.2.2 关系运算与关系表达式
- 3.2.3 逻辑运算与逻辑表达式
- 3.3 选择型程序设计
- 3.3.1 if…else 结构的应用
- 3.3.2 if-else if 结构的应用
- 3.3.3 switch 结构的应用
- 3.3.4 条件表达式
- 3.4 循环型程序设计
- 3.4.1 迭代与穷举算法
- 3.4.2 while 结构
- 3.4.3 do…while 结构
- 3.4.4 for 结构
- 3.4.5 循环结构的中途退出与重复周期的中途结束
- 习题三
- 第4 章 模块化程序设计
- 4.1 函数
- 4.1.1 设计C 语言程序就是设计函数
- 4.1.2 函数结构
- 4.1.3 函数定义与函数声明
- 4.1.4 虚实结合与传值调用
- 4.1.5 递归函数
- 4.2 变量的存储属性
- 4.2.1 变量的作用域与生存期
- 4.2.2 C 语言中变量的存储类型
- 4.2.3 通过const 声明将变量存储在只读区
- 4.3 模块的编译与链接
- 4.3.1 分别编译
- 4.3.2 用项目管理多文件程序的编译与链接过程
- 4.3.3 头文件
- 4.4 宏定义与宏替换
- 4.4.1 字符串宏定义及其基本格式
- 4.4.2 使用宏需注意的问题
- 4.4.3 撤销已定义的宏
- 4.4.4 带参数的宏定义
- 习题四
- 第5 章 数组
- 5.1 一维数组
- 5.1.1 一维数组定义及数组元素引用
- 5.1.2 数组元素的引用方法
- 5.1.3 一维数组的初始化
- 5.1.4 一维数组元素的查找与排序
- 5.1.5 数组与函数
- 5.2 字符串
- 5.2.1 字符数组与字符串
- 5.2.2 字符串的输入/输出
- 5.2.3 字符串处理函数
- 5.3 二维数组与多维数组
- 5.3.1 二维数组及其定义
- 5.3.2 二维数组的初始化
- 5.3.3 向函数传送二维数组
- *5.3.4 多维数组
- 习题五
- 第6 章 指针
- 6.1 指针基础
- 6.1.1 地址与指针
- 6.1.2 指针变量及其定义
- 6.1.3 指针变量的引用
- 6.1.4 指针的移动与比较
- 6.1.5 指向指针变量的指针与多级指针
- 6.1.6 指向void 类型的指针
- 6.2 指针与数组
- 6.2.1 数组元素的指针引用
- 6.2.2 多字符串的存储与处理
- 6.2.3 内存的动态分配与动态数组的建立
- 6.3 指针与函数
- 6.3.1 指针参数与函数的地址传送调用
- 6.3.2 带参数的主函数
- 6.3.3 返回指针值的函数
- 6.3.4 指向函数的指针
- 习题六
- 第7 章 用户定制数据类型
- 7.1 结构体类型基础
- 7.1.1 结构体类型及其定制
- 7.1.2 定义结构体类型变量及对变量的初始化
- 7.1.3 结构体变量的操作
- 7.1.4 嵌套结构体类型
- 7.1.5 位段
- 7.2 结构体数组
- 7.2.1 结构体数组的定义与初始化
- 7.2.2 对结构体数组元素的操作
- 7.3 指向结构体的指针
- 7.3.1 指向结构体变量的指针
- 7.3.2 指向结构体数组的指针
- 7.4 链表
- 7.4.1 链表的概念
- 7.4.2 链表结点的定义与链接关系的建立
- 7.4.3 动态链表的建立
- 7.5 结构体与函数
- 7.5.1 结构体变量作为函数参数
- 7.5.2 用指向结构体变量的指针作为函数参数
- 7.5.3 返回结构体类型值的函数
- 7.6 共用体类型数据
- 7.6.1 共用体的特点
- 7.6.2 共用体变量的应用
- 7.7 枚举类型数据
- 7.8 用typedef 定义类型
- 习题七
- 第8 章 文件
- 8.1 文件的有关概念
- 8.1.1 文件及其分类
- 8.1.2 文件名
- 8.1.3 文件的位置指针与读/写方式
- 8.2 流的创建与撤销
- 8.2.1 FILE 类型指针
- 8.2.2 流
- 8.2.3 文件的打开与关闭——流的创建与撤销
- 8.3 文件的顺序读/写
- 8.3.1 文件的字符读/写
- 8.3.2 文件的字符串读/写
- 8.3.3 文件的格式化读/写
- 8.3.4 文件的记录读/写
- 8.4 文件的随机读/写
- 8.4.1 文件位置指针的定位
- 8.4.2 文件随机读/写程序举例
- 8.5 文件操作的出错检测
- 8.5.1 ferror 函数
- 8.5.2 fclearerr 函数
- 习题八
- 附录
- 附录A C 语言运算符的优先级与结合性
- 附录B C99 关键字
- 附录C ASCII 码表
- 附录D 常用C 语言标准库函数
- 参考文献