出版日期:2011年05月
ISBN:9787111337157
[十位:7111337158]
页数:335
定价:¥39.00
店铺售价:¥10.80
(为您节省:¥28.20)
店铺库存:1
本
正在处理购买信息,请稍候……
我要买:
本
* 如何购买
联系店主:
15879138495
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2023-04-19 08:47:27]
乃*
烟台市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2023-03-31 11:05:08]
乔*
乌海市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2022-04-10 11:40:17]
唐**
天津市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2020-06-13 16:43:00]
方*
合肥市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2020-06-09 19:36:50]
毕**
红河哈尼族彝族自治州
《从问题到程序——程序设计与C语言引论 等2版》内容提要:
裘宗燕编著的《从问题到程序 程序设计与C语言引论(第2版)》以C作
为工具语言,讨论了基本程序设计的各方面内容,详细解释了与c语言和程
序设计有关的问题。在新版中,特别加强了针对近年日益受到业界和学术
界广泛重视的问题的讨论,并通过详细地分析和讨论大量符合C99标准的实
例,给出了分析和分解问题、找出解决问题的主要步骤、确定函数抽象、
找出循环、选择语言结构直至*后做出所需程序的完整过程。
《从问题到程序 程序设计与C语言引论(第2版)》适合作为高等院校计
算机及相关专业**门程序设计课程的教材,也可供其他学习C程序设计的
读者自学使用。
前言
本书中的编程实例和模式
第1章 程序设计和C语言
1.1 程序和程序语言
1.2 C语言简介
1.3 一个简单的C程序
1.4 程序开发过程
1.5 问题与程序设计
本章讨论的重要概念
练习
第2章 数据与简单计算程序
2.1 基本字符、标识符和关键字
2.2 数据、类型和简单程序
2.2.1 几个常用类型
2.2.2 函数printf和简单文本输出程序
《从问题到程序——程序设计与C语言引论 等2版》图书目录:
裘宗燕编著的《从问题到程序 程序设计与C语言引论(第2版)》以C作
为工具语言,讨论了基本程序设计的各方面内容,详细解释了与c语言和程
序设计有关的问题。在新版中,特别加强了针对近年日益受到业界和学术
界广泛重视的问题的讨论,并通过详细地分析和讨论大量符合C99标准的实
例,给出了分析和分解问题、找出解决问题的主要步骤、确定函数抽象、
找出循环、选择语言结构直至*后做出所需程序的完整过程。
《从问题到程序 程序设计与C语言引论(第2版)》适合作为高等院校计
算机及相关专业**门程序设计课程的教材,也可供其他学习C程序设计的
读者自学使用。
前言
本书中的编程实例和模式
第1章 程序设计和C语言
1.1 程序和程序语言
1.2 C语言简介
1.3 一个简单的C程序
1.4 程序开发过程
1.5 问题与程序设计
本章讨论的重要概念
练习
第2章 数据与简单计算程序
2.1 基本字符、标识符和关键字
2.2 数据、类型和简单程序
2.2.1 几个常用类型
2.2.2 函数printf和简单文本输出程序
2.3 运算符、表达式和计算
2.3.1 算术运算符和算术表达式
2.3.2 表达式的求值
2.3.3 计算和类型
2.4 数学函数和简单计算程序
2.4.1 函数、函数调用
2.4.2 数学函数及其使用
2.4.3 函数调用中的类型转换
语言细节和问题
C语言的字符集
基本数据类型的一些问题
数据形式的转换和输出
运算对象的求值顺序
几个常用程序模式
本章讨论的重要概念
练习
第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 循环语句 while语句
3.5.3 循环语句 for语句
3.6 若干C语言结构
3.6.1 增量和减量运算符(++、――)
3.6.2 逗号运算符
3.6.3 实现二元运算符操作的赋值运算符
3.6.4 空语句
3.6.5 定义枚举常量
3.7 输入和输出
3.7.1 格式输入函数scanf
3.7.2 字符输入和输出函数
语言细节和问题
变量的意义和实现
赋值操作的一些问题
条件表达式和条件语句
表达式和求值
输入和缓冲
几个常用程序模式
本章讨论的重要概念
练习
第4章 基本编程技术
4.1 循环程序设计
4.1.1 基本循环方式
4.1.2 求一系列完全平方数
4.1.3 判断素数(谓词函数)
4.1.4 艰难旅程(浮点误差)
4.1.5 求立方根(迭代和逼近)
4.1.6 求sin函数值(通项计算)
4.1.7 从循环中退出
4.2 输入循环
4.2.1 输入循环的基本技术
4.2.2 字符输入
4.2.3 检查输入
4.2.4 一个简单计算器
4.3 循环与递归
4.3.1 阶乘和乘幂(循环,递归)
4.3.2 fibonacci序列(计算与时间)
4.3.3 为计算过程计时
4.3.4 fibonacci序列的迭代计算(程序正确性与循环不变式)
4.3.5 *大公约数
4.3.6 河内塔(梵塔)问题
4.4 程序调试和排错
4.4.1 测试
4.4.2 白箱测试
4.4.3 黑箱测试
4.4.4 排除程序里的错误
语言细节和问题
程序的逐步求精和控制结构嵌套
循环中的几种变量
与输入输出有关的几个问题
输入与**性
几个常用程序模式
本章讨论的重要概念
练习
第5章 C程序结构
5.1 数值类型
5.1.1 字符类型
5.1.2 整数类型
5.1.3 基本数据类型的选择
5.2 几种控制语句
5.2.1 do-while循环结构
5.2.2 流程控制语句
5.2.3 开关语句
5.3 一些标准库函数
5.3.1 字符分类函数
5.3.2 随机数生成函数
5.4 程序的函数分解
5.4.1 函数分解
5.4.2 对函数的两种观点
5.4.3 函数定义与调用之间的配合
5.4.4 函数原型
5.4.5 求函数的根
5.4.6 一个简单猜数游戏
5.5 C程序结构与变量
5.5.1 外部定义的变量
5.5.2 作用域、存在期和变量类
5.5.3 变量的其他问题
5.6 预处理
5.6.1 文件包含命令
5.6.2 宏定义与宏替换
5.6.3 条件编译命令
5.6.4 定义常量
5.6.5 单词计数问题
5.7 字位运算符
本章讨论的重要概念
练习
第6章 顺序数据组织 数组
6.1 数组的定义和使用
6.1.1 数组变量的定义和声明
6.1.2 数组的使用
6.1.3 数组的初始化
6.1.4 数组程序实例
6.1.5 定义数组的问题
6.2 以数组为参数的函数
6.2.1 一个例子
6.2.2 修改实参数组的元素
6.3 二维和多维数组
6.3.1 多维数组的初始化
6.3.2 多维数组的使用
6.3.3 多维数组作为函数的参数
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.5.4 数组的划分
6.5.5 数组的排序
6.5.6 统计C程序里的关键字
语言细节和问题
数组的存储实现
越界访问的可能后果
多维数组的实现
函数参数与sizeof运算符
字符串的字典序
几个常用程序模式
本章讨论的重要概念
练习
第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.4 指针与数组操作的程序实例
7.2.5 字符指针与字符数组
7.2.6 多维数组作为参数的通用函数
7.3 指针数组
7.3.1 字符指针数组
7.3.2 指针数组与二维数组
7.3.3 命令行参数及其处理
7.4 动态存储管理
7.4.1 C语言的动态存储管理机制
7.4.2 两个程序实例
7.4.3 函数、指针和动态存储
7.4.4 定义类型
7.5 指向函数的指针
7.5.1 函数指针的定义和使用
7.5.2 函数指针作为函数的参数
语言细节和问题
指针运算原理
指针转换
使用动态存储管理的要点和细节
动态调整策略
过时的函数指针形式
复杂类型描述与解读
几个常用程序模式
本章讨论的重要概念
练习
第8章 文件和输入输出程序设计
8.1 文件的概念
8.1.1 流和文件指针
8.1.2 缓冲式输入输出
8.2 文件的使用
8.2.1 文件的打开和关闭
8.2.2 输入输出函数
8.2.3 程序实例
8.2.4 标准错误流
8.2.5 直接输入输出函数
8.3 标准流输入输出与格式控制
8.3.1 行式输入和输出
8.3.2 输入格式控制
8.3.3 输出格式控制
8.3.4 以字符串作为格式化输入输出对象
8.4 程序实例
8.4.1 求文件中数据的平均值
8.4.2 一个背单词程序
8.4.3 资金账目系统
几个常用程序模式
本章讨论的重要概念
练习
第9章 结构和复杂数据组织
9.1 结构
9.1.1 结构声明与变量定义
9.1.2 结构变量的初始化和使用
9.1.3 结构、数组与指针
9.2 枚举
9.3 结构与函数
9.3.1 处理结构的函数
9.3.2 程序实例
9.4 编程实例
9.4.1 数据组的排序
9.4.2 复数的表示和处理
9.5 链接结构(自引用结构)
9.5.1 链接结构
9.5.2 自引用结构的定义
9.5.3 程序实现
9.5.4 数据与查找
语言细节和问题
结构的实现
联合
字段
本章讨论的重要概念
练习
第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.1.3 C99的几个头文件
11.2 几个已经介绍过的头文件
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 实现特征([limit.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 多字节字符
本章讨论的重要概念
练习
第12章 C99导引
12.1 C99扩充
12.1.1 语言层扩充
12.2 C99 数组和结构
12.2.1 复合对象的初始化
12.2.2 变长数组的定义和声明
12.2.3 函数的变长数组参数
12.2.4 结构的变长数组成员
12.3 几个c99标准库包
12.3.1 标准库包[stdint.h]和[inttype.h]
12.3.2 标准库包[complex.h]
附录A C语言运算符表
附录B C语言速查
进一步学习的建议
参考文献
《从问题到程序——程序设计与C语言引论 等2版》文章节选:
裘宗燕编著的《从问题到程序 程序设计与C语言引论(第2版)》以C作
为工具语言,讨论了基本程序设计的各方面内容,详细解释了与c语言和程
序设计有关的问题。在新版中,特别加强了针对近年日益受到业界和学术
界广泛重视的问题的讨论,并通过详细地分析和讨论大量符合C99标准的实
例,给出了分析和分解问题、找出解决问题的主要步骤、确定函数抽象、
找出循环、选择语言结构直至*后做出所需程序的完整过程。
《从问题到程序 程序设计与C语言引论(第2版)》适合作为高等院校计
算机及相关专业**门程序设计课程的教材,也可供其他学习C程序设计的
读者自学使用。
前言
本书中的编程实例和模式
第1章 程序设计和C语言
1.1 程序和程序语言
1.2 C语言简介
1.3 一个简单的C程序
1.4 程序开发过程
1.5 问题与程序设计
本章讨论的重要概念
练习
第2章 数据与简单计算程序
2.1 基本字符、标识符和关键字
2.2 数据、类型和简单程序
2.2.1 几个常用类型
2.2.2 函数printf和简单文本输出程序
2.3 运算符、表达式和计算
2.3.1 算术运算符和算术表达式
2.3.2 表达式的求值
2.3.3 计算和类型
2.4 数学函数和简单计算程序
2.4.1 函数、函数调用
2.4.2 数学函数及其使用
2.4.3 函数调用中的类型转换
语言细节和问题
C语言的字符集
基本数据类型的一些问题
数据形式的转换和输出
运算对象的求值顺序
几个常用程序模式
本章讨论的重要概念
练习
第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 循环语句 while语句
3.5.3 循环语句 for语句
3.6 若干C语言结构
3.6.1 增量和减量运算符(++、――)
3.6.2 逗号运算符
3.6.3 实现二元运算符操作的赋值运算符
3.6.4 空语句
3.6.5 定义枚举常量
3.7 输入和输出
3.7.1 格式输入函数scanf
3.7.2 字符输入和输出函数
语言细节和问题
变量的意义和实现
赋值操作的一些问题
条件表达式和条件语句
表达式和求值
输入和缓冲
几个常用程序模式
本章讨论的重要概念
练习
第4章 基本编程技术
4.1 循环程序设计
4.1.1 基本循环方式
4.1.2 求一系列完全平方数
4.1.3 判断素数(谓词函数)
4.1.4 艰难旅程(浮点误差)
4.1.5 求立方根(迭代和逼近)
4.1.6 求sin函数值(通项计算)
4.1.7 从循环中退出
4.2 输入循环
4.2.1 输入循环的基本技术
4.2.2 字符输入
4.2.3 检查输入
4.2.4 一个简单计算器
4.3 循环与递归
4.3.1 阶乘和乘幂(循环,递归)
4.3.2 fibonacci序列(计算与时间)
4.3.3 为计算过程计时
4.3.4 fibonacci序列的迭代计算(程序正确性与循环不变式)
4.3.5 *大公约数
4.3.6 河内塔(梵塔)问题
4.4 程序调试和排错
4.4.1 测试
4.4.2 白箱测试
4.4.3 黑箱测试
4.4.4 排除程序里的错误
语言细节和问题
程序的逐步求精和控制结构嵌套
循环中的几种变量
与输入输出有关的几个问题
输入与**性
几个常用程序模式
本章讨论的重要概念
练习
第5章 C程序结构
5.1 数值类型
5.1.1 字符类型
5.1.2 整数类型
5.1.3 基本数据类型的选择
5.2 几种控制语句
5.2.1 do-while循环结构
5.2.2 流程控制语句
5.2.3 开关语句
5.3 一些标准库函数
5.3.1 字符分类函数
5.3.2 随机数生成函数
5.4 程序的函数分解
5.4.1 函数分解
5.4.2 对函数的两种观点
5.4.3 函数定义与调用之间的配合
5.4.4 函数原型
5.4.5 求函数的根
5.4.6 一个简单猜数游戏
5.5 C程序结构与变量
5.5.1 外部定义的变量
5.5.2 作用域、存在期和变量类
5.5.3 变量的其他问题
5.6 预处理
5.6.1 文件包含命令
5.6.2 宏定义与宏替换
5.6.3 条件编译命令
5.6.4 定义常量
5.6.5 单词计数问题
5.7 字位运算符
本章讨论的重要概念
练习
第6章 顺序数据组织 数组
6.1 数组的定义和使用
6.1.1 数组变量的定义和声明
6.1.2 数组的使用
6.1.3 数组的初始化
6.1.4 数组程序实例
6.1.5 定义数组的问题
6.2 以数组为参数的函数
6.2.1 一个例子
6.2.2 修改实参数组的元素
6.3 二维和多维数组
6.3.1 多维数组的初始化
6.3.2 多维数组的使用
6.3.3 多维数组作为函数的参数
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.5.4 数组的划分
6.5.5 数组的排序
6.5.6 统计C程序里的关键字
语言细节和问题
数组的存储实现
越界访问的可能后果
多维数组的实现
函数参数与sizeof运算符
字符串的字典序
几个常用程序模式
本章讨论的重要概念
练习
第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.4 指针与数组操作的程序实例
7.2.5 字符指针与字符数组
7.2.6 多维数组作为参数的通用函数
7.3 指针数组
7.3.1 字符指针数组
7.3.2 指针数组与二维数组
7.3.3 命令行参数及其处理
7.4 动态存储管理
7.4.1 C语言的动态存储管理机制
7.4.2 两个程序实例
7.4.3 函数、指针和动态存储
7.4.4 定义类型
7.5 指向函数的指针
7.5.1 函数指针的定义和使用
7.5.2 函数指针作为函数的参数
语言细节和问题
指针运算原理
指针转换
使用动态存储管理的要点和细节
动态调整策略
过时的函数指针形式
复杂类型描述与解读
几个常用程序模式
本章讨论的重要概念
练习
第8章 文件和输入输出程序设计
8.1 文件的概念
8.1.1 流和文件指针
8.1.2 缓冲式输入输出
8.2 文件的使用
8.2.1 文件的打开和关闭
8.2.2 输入输出函数
8.2.3 程序实例
8.2.4 标准错误流
8.2.5 直接输入输出函数
8.3 标准流输入输出与格式控制
8.3.1 行式输入和输出
8.3.2 输入格式控制
8.3.3 输出格式控制
8.3.4 以字符串作为格式化输入输出对象
8.4 程序实例
8.4.1 求文件中数据的平均值
8.4.2 一个背单词程序
8.4.3 资金账目系统
几个常用程序模式
本章讨论的重要概念
练习
第9章 结构和复杂数据组织
9.1 结构
9.1.1 结构声明与变量定义
9.1.2 结构变量的初始化和使用
9.1.3 结构、数组与指针
9.2 枚举
9.3 结构与函数
9.3.1 处理结构的函数
9.3.2 程序实例
9.4 编程实例
9.4.1 数据组的排序
9.4.2 复数的表示和处理
9.5 链接结构(自引用结构)
9.5.1 链接结构
9.5.2 自引用结构的定义
9.5.3 程序实现
9.5.4 数据与查找
语言细节和问题
结构的实现
联合
字段
本章讨论的重要概念
练习
第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.1.3 C99的几个头文件
11.2 几个已经介绍过的头文件
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 实现特征([limit.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 多字节字符
本章讨论的重要概念
练习
第12章 C99导引
12.1 C99扩充
12.1.1 语言层扩充
12.2 C99 数组和结构
12.2.1 复合对象的初始化
12.2.2 变长数组的定义和声明
12.2.3 函数的变长数组参数
12.2.4 结构的变长数组成员
12.3 几个c99标准库包
12.3.1 标准库包[stdint.h]和[inttype.h]
12.3.2 标准库包[complex.h]
附录A C语言运算符表
附录B C语言速查
进一步学习的建议
参考文献
《从问题到程序——程序设计与C语言引论 等2版》编辑推荐与评论:
裘宗燕编著的《从问题到程序 程序设计与C语言引论(第2版)》以C作
为工具语言,讨论了基本程序设计的各方面内容,详细解释了与c语言和程
序设计有关的问题。在新版中,特别加强了针对近年日益受到业界和学术
界广泛重视的问题的讨论,并通过详细地分析和讨论大量符合C99标准的实
例,给出了分析和分解问题、找出解决问题的主要步骤、确定函数抽象、
找出循环、选择语言结构直至*后做出所需程序的完整过程。
《从问题到程序 程序设计与C语言引论(第2版)》适合作为高等院校计
算机及相关专业**门程序设计课程的教材,也可供其他学习C程序设计的
读者自学使用。
前言
本书中的编程实例和模式
第1章 程序设计和C语言
1.1 程序和程序语言
1.2 C语言简介
1.3 一个简单的C程序
1.4 程序开发过程
1.5 问题与程序设计
本章讨论的重要概念
练习
第2章 数据与简单计算程序
2.1 基本字符、标识符和关键字
2.2 数据、类型和简单程序
2.2.1 几个常用类型
2.2.2 函数printf和简单文本输出程序
2.3 运算符、表达式和计算
2.3.1 算术运算符和算术表达式
2.3.2 表达式的求值
2.3.3 计算和类型
2.4 数学函数和简单计算程序
2.4.1 函数、函数调用
2.4.2 数学函数及其使用
2.4.3 函数调用中的类型转换
语言细节和问题
C语言的字符集
基本数据类型的一些问题
数据形式的转换和输出
运算对象的求值顺序
几个常用程序模式
本章讨论的重要概念
练习
第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 循环语句 while语句
3.5.3 循环语句 for语句
3.6 若干C语言结构
3.6.1 增量和减量运算符(++、――)
3.6.2 逗号运算符
3.6.3 实现二元运算符操作的赋值运算符
3.6.4 空语句
3.6.5 定义枚举常量
3.7 输入和输出
3.7.1 格式输入函数scanf
3.7.2 字符输入和输出函数
语言细节和问题
变量的意义和实现
赋值操作的一些问题
条件表达式和条件语句
表达式和求值
输入和缓冲
几个常用程序模式
本章讨论的重要概念
练习
第4章 基本编程技术
4.1 循环程序设计
4.1.1 基本循环方式
4.1.2 求一系列完全平方数
4.1.3 判断素数(谓词函数)
4.1.4 艰难旅程(浮点误差)
4.1.5 求立方根(迭代和逼近)
4.1.6 求sin函数值(通项计算)
4.1.7 从循环中退出
4.2 输入循环
4.2.1 输入循环的基本技术
4.2.2 字符输入
4.2.3 检查输入
4.2.4 一个简单计算器
4.3 循环与递归
4.3.1 阶乘和乘幂(循环,递归)
4.3.2 fibonacci序列(计算与时间)
4.3.3 为计算过程计时
4.3.4 fibonacci序列的迭代计算(程序正确性与循环不变式)
4.3.5 *大公约数
4.3.6 河内塔(梵塔)问题
4.4 程序调试和排错
4.4.1 测试
4.4.2 白箱测试
4.4.3 黑箱测试
4.4.4 排除程序里的错误
语言细节和问题
程序的逐步求精和控制结构嵌套
循环中的几种变量
与输入输出有关的几个问题
输入与**性
几个常用程序模式
本章讨论的重要概念
练习
第5章 C程序结构
5.1 数值类型
5.1.1 字符类型
5.1.2 整数类型
5.1.3 基本数据类型的选择
5.2 几种控制语句
5.2.1 do-while循环结构
5.2.2 流程控制语句
5.2.3 开关语句
5.3 一些标准库函数
5.3.1 字符分类函数
5.3.2 随机数生成函数
5.4 程序的函数分解
5.4.1 函数分解
5.4.2 对函数的两种观点
5.4.3 函数定义与调用之间的配合
5.4.4 函数原型
5.4.5 求函数的根
5.4.6 一个简单猜数游戏
5.5 C程序结构与变量
5.5.1 外部定义的变量
5.5.2 作用域、存在期和变量类
5.5.3 变量的其他问题
5.6 预处理
5.6.1 文件包含命令
5.6.2 宏定义与宏替换
5.6.3 条件编译命令
5.6.4 定义常量
5.6.5 单词计数问题
5.7 字位运算符
本章讨论的重要概念
练习
第6章 顺序数据组织 数组
6.1 数组的定义和使用
6.1.1 数组变量的定义和声明
6.1.2 数组的使用
6.1.3 数组的初始化
6.1.4 数组程序实例
6.1.5 定义数组的问题
6.2 以数组为参数的函数
6.2.1 一个例子
6.2.2 修改实参数组的元素
6.3 二维和多维数组
6.3.1 多维数组的初始化
6.3.2 多维数组的使用
6.3.3 多维数组作为函数的参数
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.5.4 数组的划分
6.5.5 数组的排序
6.5.6 统计C程序里的关键字
语言细节和问题
数组的存储实现
越界访问的可能后果
多维数组的实现
函数参数与sizeof运算符
字符串的字典序
几个常用程序模式
本章讨论的重要概念
练习
第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.4 指针与数组操作的程序实例
7.2.5 字符指针与字符数组
7.2.6 多维数组作为参数的通用函数
7.3 指针数组
7.3.1 字符指针数组
7.3.2 指针数组与二维数组
7.3.3 命令行参数及其处理
7.4 动态存储管理
7.4.1 C语言的动态存储管理机制
7.4.2 两个程序实例
7.4.3 函数、指针和动态存储
7.4.4 定义类型
7.5 指向函数的指针
7.5.1 函数指针的定义和使用
7.5.2 函数指针作为函数的参数
语言细节和问题
指针运算原理
指针转换
使用动态存储管理的要点和细节
动态调整策略
过时的函数指针形式
复杂类型描述与解读
几个常用程序模式
本章讨论的重要概念
练习
第8章 文件和输入输出程序设计
8.1 文件的概念
8.1.1 流���文件指针
8.1.2 缓冲式输入输出
8.2 文件的使用
8.2.1 文件的打开和关闭
8.2.2 输入输出函数
8.2.3 程序实例
8.2.4 标准错误流
8.2.5 直接输入输出函数
8.3 标准流输入输出与格式控制
8.3.1 行式输入和输出
8.3.2 输入格式控制
8.3.3 输出格式控制
8.3.4 以字符串作为格式化输入输出对象
8.4 程序实例
8.4.1 求文件中数据的平均值
8.4.2 一个背单词程序
8.4.3 资金账目系统
几个常用程序模式
本章讨论的重要概念
练习
第9章 结构和复杂数据组织
9.1 结构
9.1.1 结构声明与变量定义
9.1.2 结构变量的初始化和使用
9.1.3 结构、数组与指针
9.2 枚举
9.3 结构与函数
9.3.1 处理结构的函数
9.3.2 程序实例
9.4 编程实例
9.4.1 数据组的排序
9.4.2 复数的表示和处理
9.5 链接结构(自引用结构)
9.5.1 链接结构
9.5.2 自引用结构的定义
9.5.3 程序实现
9.5.4 数据与查找
语言细节和问题
结构的实现
联合
字段
本章讨论的重要概念
练习
第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.1.3 C99的几个头文件
11.2 几个已经介绍过的头文件
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 实现特征([limit.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 多字节字符
本章讨论的重要概念
练习
第12章 C99导引
12.1 C99扩充
12.1.1 语言层扩充
12.2 C99 数组和结构
12.2.1 复合对象的初始化
12.2.2 变长数组的定义和声明
12.2.3 函数的变长数组参数
12.2.4 结构的变长数组成员
12.3 几个c99标准库包
12.3.1 标准库包[stdint.h]和[inttype.h]
12.3.2 标准库包[complex.h]
附录A C语言运算符表
附录B C语言速查
进一步学习的建议
参考文献
《从问题到程序——程序设计与C语言引论 等2版》作者介绍:
裘宗燕编著的《从问题到程序 程序设计与C语言引论(第2版)》以C作
为工具语言,讨论了基本程序设计的各方面内容,详细解释了与c语言和程
序设计有关的问题。在新版中,特别加强了针对近年日益受到业界和学术
界广泛重视的问题的讨论,并通过详细地分析和讨论大量符合C99标准的实
例,给出了分析和分解问题、找出解决问题的主要步骤、确定函数抽象、
找出循环、选择语言结构直至*后做出所需程序的完整过程。
《从问题到程序 程序设计与C语言引论(第2版)》适合作为高等院校计
算机及相关专业**门程序设计课程的教材,也可供其他学习C程序设计的
读者自学使用。
前言
本书中的编程实例和模式
第1章 程序设计和C语言
1.1 程序和程序语言
1.2 C语言简介
1.3 一个简单的C程序
1.4 程序开发过程
1.5 问题与程序设计
本章讨论的重要概念
练习
第2章 数据与简单计算程序
2.1 基本字符、标识符和关键字
2.2 数据、类型和简单程序
2.2.1 几个常用类型
2.2.2 函数printf和简单文本输出程序
2.3 运算符、表达式和计算
2.3.1 算术运算符和算术表达式
2.3.2 表达式的求值
2.3.3 计算和类型
2.4 数学函数和简单计算程序
2.4.1 函数、函数调用
2.4.2 数学函数及其使用
2.4.3 函数调用中的类型转换
语言细节和问题
C语言的字符集
基本数据类型的一些问题
数据形式的转换和输出
运算对象的求值顺序
几个常用程序模式
本章讨论的重要概念
练习
第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 循环语句 while语句
3.5.3 循环语句 for语句
3.6 若干C语言结构
3.6.1 增量和减量运算符(++、――)
3.6.2 逗号运算符
3.6.3 实现二元运算符操作的赋值运算符
3.6.4 空语句
3.6.5 定义枚举常量
3.7 输入和输出
3.7.1 格式输入函数scanf
3.7.2 字符输入和输出函数
语言细节和问题
变量的意义和实现
赋值操作的一些问题
条件表达式和条件语句
表达式和求值
输入和缓冲
几个常用程序模式
本章讨论的重要概念
练习
第4章 基本编程技术
4.1 循环程序设计
4.1.1 基本循环方式
4.1.2 求一系列完全平方数
4.1.3 判断素数(谓词函数)
4.1.4 艰难旅程(浮点误差)
4.1.5 求立方根(迭代和逼近)
4.1.6 求sin函数值(通项计算)
4.1.7 从循环中退出
4.2 输入循环
4.2.1 输入循环的基本技术
4.2.2 字符输入
4.2.3 检查输入
4.2.4 一个简单计算器
4.3 循环与递归
4.3.1 阶乘和乘幂(循环,递归)
4.3.2 fibonacci序列(计算与时间)
4.3.3 为计算过程计时
4.3.4 fibonacci序列的迭代计算(程序正确性与循环不变式)
4.3.5 *大公约数
4.3.6 河内塔(梵塔)问题
4.4 程序调试和排错
4.4.1 测试
4.4.2 白箱测试
4.4.3 黑箱测试
4.4.4 排除程序里的错误
语言细节和问题
程序的逐步求精和控制结构嵌套
循环中的几种变量
与输入输出有关的几个问题
输入与**性
几个常用程序模式
本章讨论的重要概念
练习
第5章 C程序结构
5.1 数值类型
5.1.1 字符类型
5.1.2 整数类型
5.1.3 基本数据类型的选择
5.2 几种控制语句
5.2.1 do-while循环结构
5.2.2 流程控制语句
5.2.3 开关语句
5.3 一些标准库函数
5.3.1 字符分类函数
5.3.2 随机数生成函数
5.4 程序的函数分解
5.4.1 函数分解
5.4.2 对函数的两种观点
5.4.3 函数定义与调用之间的配合
5.4.4 函数原型
5.4.5 求函数的根
5.4.6 一个简单猜数游戏
5.5 C程序结构与变量
5.5.1 外部定义的变量
5.5.2 作用域、存在期和变量类
5.5.3 变量的其他问题
5.6 预处理
5.6.1 文件包含命令
5.6.2 宏定义与宏替换
5.6.3 条件编译命令
5.6.4 定义常量
5.6.5 单词计数问题
5.7 字位运算符
本章讨论的重要概念
练习
第6章 顺序数据组织 数组
6.1 数组的定义和使用
6.1.1 数组变量的定义和声明
6.1.2 数组的使用
6.1.3 数组的初始化
6.1.4 数组程序实例
6.1.5 定义数组的问题
6.2 以数组为参数的函数
6.2.1 一个例子
6.2.2 修改实参数组的元素
6.3 二维和多维数组
6.3.1 多维数组的初始化
6.3.2 多维数组的使用
6.3.3 多维数组作为函数的参数
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.5.4 数组的划分
6.5.5 数组的排序
6.5.6 统计C程序里的关键字
语言细节和问题
数组的存储实现
越界访问的可能后果
多维数组的实现
函数参数与sizeof运算符
字符串的字典序
几个常用程序模式
本章讨论的重要概念
练习
第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.4 指针与数组操作的程序实例
7.2.5 字符指针与字符数组
7.2.6 多维数组作为参数的通用函数
7.3 指针数组
7.3.1 字符指针数组
7.3.2 指针数组与二维数组
7.3.3 命令行参数及其处理
7.4 动态存储管理
7.4.1 C语言的动态存储管理机制
7.4.2 两个程序实例
7.4.3 函数、指针和动态存储
7.4.4 定义类型
7.5 指向函数的指针
7.5.1 函数指针的定义和使用
7.5.2 函数指针作为函数的参数
语言细节和问题
指针运算原理
指针转换
使用动态存储管理的要点和细节
动态调整策略
过时的函数指针形式
复杂类型描述与解读
几个常用程序模式
本章讨论的重要概念
练习
第8章 文件和输入输出程序设计
8.1 文件的概念
8.1.1 流和文件指针
8.1.2 缓冲式输入输出
8.2 文件的使用
8.2.1 文件的打开和关闭
8.2.2 输入输出函数
8.2.3 程序实例
8.2.4 标准错误流
8.2.5 直接输入输出函数
8.3 标准流输入输出与格式控制
8.3.1 行式输入和输出
8.3.2 输入格式控制
8.3.3 输出格式控制
8.3.4 以字符串作为格式化输入输出对象
8.4 程序实例
8.4.1 求文件中数据的平均值
8.4.2 一个背单词程序
8.4.3 资金账目系统
几个常用程序模式
本章讨论的重要概念
练习
第9章 结构和复杂数据组织
9.1 结构
9.1.1 结构声明与变量定义
9.1.2 结构变量的初始化和使用
9.1.3 结构、数组与指针
9.2 枚举
9.3 结构与函数
9.3.1 处理结构的函数
9.3.2 程序实例
9.4 编程实例
9.4.1 数据组的排序
9.4.2 复数的表示和处理
9.5 链接结构(自引用结构)
9.5.1 链接结构
9.5.2 自引用结构的定义
9.5.3 程序实现
9.5.4 数据与查找
语言细节和问题
结构的实现
联合
字段
本章讨论的重要概念
练习
第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.1.3 C99的几个头文件
11.2 几个已经介绍过的头文件
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 实现特征([limit.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 多字节字符
本章讨论的重要概念
练习
第12章 C99导引
12.1 C99扩充
12.1.1 语言层扩充
12.2 C99 数组和结构
12.2.1 复合对象的初始化
12.2.2 变长数组的定义和声明
12.2.3 函数的变长数组参数
12.2.4 结构的变长数组成员
12.3 几个c99标准库包
12.3.1 标准库包[stdint.h]和[inttype.h]
12.3.2 标准库包[complex.h]
附录A C语言运算符表
附录B C语言速查
进一步学习的建议
参考文献