第1章程序设计和C语言
1.1程序和程序语言
1.2C语言简介
1.3一个简单的C程序
1.4程序开发过程
1.5问题与程序设计
本章讨论的重要概念
练习
第2章数据对象与计算
2.1基本字符,名字表示,标识符和关键字
2.2数据与类型
2.3基本类型与数据表示
2.3.1整数类型和整数的表示
2.3.2实数类型和实数的表示
2.3.3字符类型和字符的表示
2.3.4数据的外部表示,内部表示与转换
2.4运算符,表达式与计算
2.4.1算术运算符
2.4.2算术表达式
2.4.3表达式的求值
2.4.4计算和类型
2.5数学函数库及其使用
2.5.1函数,函数调用
2.5.2数学函数及其使用
2.5.3函数调用中的类型转换
问题解释
几个常用程序模式
本章讨论的重要概念
练习
第3章变量 函数和控制结构
3.1语句,复合结构
3.2变量—概念,定义和使用
3.2.1变量的定义
3.2.2变量的赋值与取值
3.2.3几个问题
3.3定义函数(初步)
3.3.1函数定义
3.3.2函数和程序
3.3.3函数与类型
3.3.4自定义输出函数
3.4关系表达式,逻辑表达式,条件表达式
3.4.1关系表达式和条件表达式
3.4.2逻辑表达式
3.5语句与控制结构
3.5.1条件语句(if语句)
3.5.2循环语句(1):while语句
3.5.3循环语句(2):for语句
3.6若干常用结构和问题
3.6.1增量和减量运算符(++,--)
3.6.2逗号运算符
3.6.3实现二元运算符操作的赋值运算符
3.6.4空语句
3.6.5表达式和求值
问题解释
几个常用程序模式
本章讨论的重要概念
练习
第4章基本程序设计技术
4.1循环程序设计
4.1.1基本循环方式
4.1.2求一系列完全平方数
4.1.3判断素数(谓词函数)
4.1.4艰难的旅程(浮点误差)
4.1.5求立方根(迭代和逼进)
4.1.6求sin函数值(通项计算)
4.2循环程序的问题
4.2.1从循环中退出
4.2.2循环中的几种变量
4.3循环与递归
4.3.1阶乘和乘幂(循环,递归)
4.3.2Fibonacci序列(计算与时间)
4.3.3为计算过程计时
4.3.4Fibonacci序列的迭代计算(程序正确性与循环不变式)
4.3.5最大公约数
4.3.6河内塔(梵塔)问题
4.4基本输入输出
4.4.1格式输入函数scanf
4.4.2字符输入输出函数
4.4.3输入函数的返回值及其作用
4.5控制结构和控制语句
4.5.1do-while循环结构
4.5.2流程控制语句
4.5.3开关语句
4.6程序设计实例
4.6.1一个简单计算器
4.6.2定义枚举常量
4.6.3单词计数问题
4.7程序测试和排错
4.7.1测试
4.7.2白箱测试
4.7.3黑箱测试
4.7.4排除程序里的错误
问题解释
几个常用程序模式
本章讨论的重要概念
练习
第5章C程序结构
5.1数值类型
5.1.1实数类型和整数类型
15.1.2字符类型
5.1.3整数类型
5.1.4基本数据类型的选择
5.2函数和标准库函数
5.2.1C语言的库函数
5.2.2字符分类函数
5.2.3随机数生成函数
5.3函数定义和程序的函数分解
5.3.1主函数
5.3.2程序的函数分解
5.3.3对函数的两种观点
5.3.4函数原型
5.4C程序结构与变量
5.4.1外部定义的变量
5.4.2作用域与生存期
5.4.3外部变量和自动变量
5.4.4变量定义的嵌套
5.4.5静态局部变量
5.4.6变量的其他问题
5.4.7一个实例
5.5预处理
5.5.1文件包含命令
5.5.2宏定义与宏替换
5.5.3条件编译命令
5.6定义常量
5.7字位运算符
5.8编程实例
5.8.1一个简单的猜数游戏
5.8.2加密与解密
本章讨论的重要概念
练习
第6章数组
6.1数组的概念,定义和使用
6.1.1定义数组变量
6.1.2数组的使用
6.1.3数组的初始化
6.1.4数组的存储实现
6.2数组程序实例
6.2.1从字符到下标
6.2.2筛法求素数
6.2.3成绩分类
6.2.4多项式求值
6.2.5定义数组的问题
6.3数组作为函数参数
6.3.1一个例子
6.3.2修改实参数组的元素
6.4字符数组与字符串
6.4.1字符数组
6.4.2字符串
6.4.3程序实例
6.4.4标准库字符串处理函数
6.4.5输出文本里的最长行
6.5两维和多维数组
6.5.1多维数组的初始化
6.5.2多维数组的表示和使用
6.5.3多维数组作为函数的参数
6.6编程实例
6.6.1成绩直方图
6.6.2一个通用带检查的整数输入函数
6.6.3“计算”数组变量的大小
6.6.4统计C程序里的关键字
6.6.5数组的划分
6.6.6数组的排序
问题解释
几个常用程序模式
本章讨论的重要概念
练习
第7章指针
7.1地址与指针
7.2指针变量的定义和使用
7.2.1指针操作
7.2.2指针作为函数的参数
7.2.3与指针有关的一些问题
7.3指针与数组
7.3.1指向数组元素的指针
7.3.2基于指针运算的数组程序设计
7.3.3数组参数与指针
7.3.4指针与数组操作的程序实例
7.3.5字符指针与字符数组
7.4指针数组
7.4.1指针数组与两维数组
7.4.2命令行参数及其处理
7.5多维数组作为参数的通用函数
7.6动态存储管理
7.6.1为什么需要动态存储管理
7.6.2C语言的动态存储管理机制
7.6.3两个程序实例
7.6.4函数,指针和动态存储
7.7定义类型
7.7.1定义数组类型和指针类型
7.7.2复杂类型描述与解读
7.8指向函数的指针
7.8.1函数指针的定义和使用
7.8.2函数指针作为函数的参数
7.8.3数值积分函数
7.8.4若干以函数指针为参数的数组操作实用函数
几个常用程序模式
本章讨论的重要概念
练习
第8章文件和输入输出
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行式输入和输出
8.3.2输入格式控制
8.3.3输出格式控制
8.3.4以字符串作为格式化输入输出对象
8.3.5标准错误流
8.4程序实例
8.4.1求文件数据的平均值
8.4.2一个背单词程序
8.4.3资金账目系统
练习
第9章结构和其他数据机制
9.1结构(struct)
9.1.1结构声明与变量定义
9.1.2结构变量的初始化和使用
9.1.3结构,数组与指针
9.2结构与函数
9.2.1处理结构的函数
9.2.2程序实例
9.3联合(union)
9.4枚举(enum)
9.5编程实例
9.5.1数据组的排序
9.5.2复数的表示和处理
9.6链接结构(自引用结构)
9.6.1链接结构
9.6.2自引用结构的定义
9.6.3程序实现
9.6.4数据与查找
9.7字段
问题解释
本章讨论的重要概念
练习
第10章程序开发技术
10.1分别编译和C程序的分块开发
10.1.1分块开发的问题和方法
10.1.2程序实例:学生成绩处理
10.1.3分块重整
10.1.4其他安排和考虑
10.1.5模块化思想和技术
10.1.6单一头文件结构和多个头文件结构
10.2功能模块和程序库
10.2.1复数模块
10.2.2目标文件和库
10.2.3防止重复包含
10.3错误报告和处理
10.3.1建立统一的错误报告机制
10.3.2定义变参数的错误报告函数
10.3.3运行中错误的检查和处理
10.4程序的配置
10.4.1程序的行为参数和启动时的配置
10.4.2交互式配置
10.4.3通过命令行参数
10.4.4采用配置文件
10.5程序开发过程
10.5.1自上而下的开发
10.5.2自下而上的开发
10.5.3实际开发过程
练习
第11章标准库
11.1标准库结构
11.1.1标准定义(<stddef.h>)
11.1.2错误信息(<errno.h>)
11.2几个已经介绍过的头文件
11.2.1数学函数(<math.h>)
11.2.2字符处理函数(<ctype.h>)
11.3字符串函数(<string.h>)
11.3.1一些字符串函数
11.3.2存储区操作
11.4功能函数(<stdlib.h>)
11.4.1几个整数函数
11.4.2数值转换
11.4.3执行控制
11.4.4与执行环境交互
11.4.5常用函数bsearch和qsort
11.5日期和时间(<time.h>)
11.6实现特征(<limits.h>和<float.h>)
11.6.1整数类型特征
11.6.2浮点数类型特征
11.7其他与输入输出有关的函数(<stdio.h>)
11.7.1符号常量和类型
11.7.2文件操作函数
11.7.3流缓冲区操作函数
11.7.4文件定位及定位函数
11.7.5其他有关函数
11.7.6采用va_list参数的输出函数
11.8定义变长度参数表(<stdarg.h>)
11.9非局部控制转移(<setjmp.h>)
11.10调试断言和信号处理(<assert.h>和<signal.h>)
11.11标准库的其他功能
11.11.1本地化
11.11.2多字节字符
本章讨论的重要概念
练习
附录AC语言运算符表
附录BC语言速查
附录C99简介
进一步学习的建议
参考文献
|