《普通高等教育“十二五”规划教材·河南省省级精品课程教材:C语言程序设计》是河南省省级精品课程教材。全书分为程序设计基础篇和程序设计进阶篇两大部分:基础篇介绍基于Visual C++ 6.0的C语言开发环境、基本数据类型与表达式、基本输入/输出语句、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数与预处理命令、典型算法与综合程序设计;进阶篇主要介绍指针、结构体与共用体、位运算、文件和模块化程序设计方法。
《普通高等教育“十二五”规划教材·河南省省级精品课程教材:C语言程序设计》知识体系完整、结构清晰、叙述简洁、例题典型丰富,注重读者进行程序设计方法的基础训练,培养良好的程序设计风格。本书配有网络版的教学平台及考试系统,并提供相关的教学资源。
C语言是目前世界上应用最广泛的一种结构化的程序设计语言。它既有高级语言的功能,又有低级语言的功能,它提供类型丰富、使用灵活的基本运算和数据类型,而且可移植性非常好,许多大型应用软件都是用C语言编写的,深受编程者的喜爱。
本书分为程序设计基础篇和程序设计进阶篇两大部分,基础篇介绍基于VisualC++6.0的C语言开发环境、基本数据类型与表达式、基本输入/输出语句、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数与预处理命令、典型算法与综合程序设计,进阶篇主要介绍指针、结构体与共用体、位运算、文件和模块化程序设计方法。
本书知识体系完整、结构清晰、叙述简洁、例题典型丰富,注重读者进行程序设计方法的基础训练,培养良好的程序设计风格。
本书的主要特点如下。
1.知识点精练,实用性强
C语言程序设计课程的知识点繁多,为了让读者在学习C语言程序设计过程中快速入门,本书对各个章节中的知识点进行了提炼,把一些不常用的知识点进行了删减,增加了典型算法与综合程序设计的内容,使初学者能够快速掌握C语言程序设计的方法。
2.案例新颖、趣味性强
教材中的每个案例都经过精心设计,趣味性及实用性较强,通过这些案例,不仅可以提高读者学习C语言的兴趣,而且也可以对所学知识点达到举一反三的效果,从而使读者更深刻地理解所学习的知识点。
3.注重程序代码的规范化
本书中的所有程序代码严格按照流行的C语言的书写规范进行编写,使读者在C语言学习中逐步养成良好的代码书写习惯,提高读者对程序设计严谨性、缜密性、规范性的认识,为培养优秀的程序员打下良好的基础。
4.通过实际案例学习知识点,提高分析问题和独立编写程序的能力
本书通过实际项目中的综合应用程序将C语言的知识点融为一体,使读者能够有目的性地学习C语言的各知识点。在每个综合应用程序中,通过需求分析、程序编写、调试运行等标准化程序设计的步骤,使读者较快地提高独立编写程序的能力,掌握标准化的程序设计方法。
本书配有网络版的教学平台及考试系统,并提供相关的教学资源(电子课件、例题源代码等)。需要的教师,可自华信教育资源网免费注册下载,也可与本书的编辑联系获取。
本书由长期从事一线教学的教师和具有多年C语言实际项目编程经验的工程技术人员编写,全书由普杰信教授负责主审,刘欣亮、李敏担任主编,韩同跃、王爱珍、王平、韩丰担任副主编。韩同跃编写了第1、2章;王爱珍编写了第3、4章;李敏编写了第5、6章;王平编写了第7、8章;刘欣亮编写了第10、12章;韩丰编写了第9、11章。此外,张兵利、薛冰冰、赵红英、韩爱意参加了部分程序的调试工作。在本书的编写过程中,参阅并引用了国内外诸多同行的著作,在此向他们致意。
由于作者学术水平有限,书中错误和不妥之处在所难免,敬请读者批评指正。
2012年12月
第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.2.3 C和C++
1.3 C程序的结构
1.3.1 简单的C程序
1.3.2 C程序的结构
1.4 C语言程序的运行步骤和集成开发环境
1.4.1 C语言程序的运行步骤
1.4.2 C语言的集成开发环境
小结
习题1
第2章 数据类型、 运算符与表达式
2.1 C语言数据类型概述
2.2 常量
2.2.1 常量的概念
2.2.2 符号常量
2.2.3 整型常量
2.2.4 实型常量
2.2.5 字符常量
2.2.6 字符串常量
2.3 变量
2.3.1 变量的概念及其应用
2.3.2 整型变量
2.3.3 实型变量
2.3.4 字符型变量
2.4 算术运算符和算术表达式
2.4.1 运算符概述
2.4.2 算术运算符和算术表达式
2.5 赋值运算符和赋值表达式
2.5.1 赋值运算符
2.5.2 赋值表达式及其值
2.5.3 复合赋值运算符
2.6 逗号运算符和逗号表达式
2.7 数据类型转换
2.7.1 数据类型的自动转换
2.7.2 数据类型的强制转换
小结
习题2
第3章 顺序结构程序设计
3.1 结构化程序设计方法
3.1.1 自顶向下、逐步求精、模块化的结构化程序设计方法
3.1.2 程序的结构
3.2 C语句概述
3.2.1 表达式语句
3.2.2 函数调用语句
3.2.3 控制语句
3.2.4 复合语句
3.2.5 空语句
3.3 程序的注释
3.4 数据的输入与输出
3.4.1 输入和输出的基本概念
3.4.2 输入和输出的实现
3.5 字符数据输入/输出函数
3.5.1 字符输出函数putchar
3.5.2 字符输入函数getchar
3.6 格式输入/输出函数
3.6.1 格式输出函数printf
3.6.2 格式输入函数scanf
3.7 顺序结构程序设计举例
小结
习题3
第4章 选择结构程序设计
4.1 关系表达式和逻辑表达式
4.1.1 关系运算符和关系表达式
4.1.2 逻辑运算符和逻辑表达式
4.2 条件运算符和条件表达式
4.2.1 条件运算符
4.2.2 条件表达式和求值规则
4.3 if语句
4.3.1 if语句的格式和功能
4.3.2 if语句的嵌套
4.4 switch语句
4.5 if语句应用程序设计
4.6 switch语句与多分支if语句的比较
小结
习题4
第5章 循环结构程序设计
5.1 循环结构的引入
5.2 三种实现循环结构的语句
5.2.1 while语句
5.2.2 do while语句
5.2.3 for语句
5.3 break语句和continue语句
5.3.1 break语句
5.3.2 continue语句
5.4 循环嵌套
5.4.1 循环嵌套的概念
5.4.2 常见的形式
5.4.3 循环嵌套的执行过程
5.4.4 使用注意事项
5.5 综合程序设计
5.5.1 穷举法
5.5.2 递推法
5.5.3 迭代法
小结
习题5
第6章 数组
6.1 数组的引入
6.1.1 问题的提出
6.1.2 数组的基本概念
6.1.3 数组的分类
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.3.3 二维数组的存储
6.3.4 二维数组的初始化
6.3.5 二维数组应用举例
6.4 字符数组
6.4.1 字符数组的定义与初始化
6.4.2 字符数组的输入和输出
6.4.3 常用的字符串处理函数
6.4.4 字符数组的应用举例
小结
习题6
第7章 函数与预处理命令
7.1 概述
7.1.1 使用函数的重要性
7.1.2 用户自定义函数的三个基本元素
7.2 函数的调用
7.2.1 函数的简单调用
7.2.2 函数的嵌套调用
7.2.3 函数的递归调用
7.3 数组作为函数参数
7.3.1 数组元素作为函数参数
7.3.2 数组名作为函数参数
7.4 变量的分类
7.4.1 按作用域分类
7.4.2 按存储类别分类
7.5 多文件程序
7.6 编译预处理
7.6.1 宏定义
7.6.2 文件包含
小结
习题7
第8章 典型算法与综合程序设计
8.1 数值计算方法
8.1.1 大数阶乘计算
8.1.2 一元n次方程根的数值计算
8.1.3 定积分的计算
8.2 实用工具的设计
8.2.1 计算器
8.2.2 万年历
8.3 游戏类的设计
8.3.1 猜拳
8.3.2 汉诺塔
小结
第9章 指针
9.1 指针的概念
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.5 函数的指针变量
9.6 指针型函数
9.7 指针数组和指向指针的指针
9.7.1 指针数组的概念
9.7.2 指向指针的指针
小结
习题9
第10章 结构体与共用体
10.1 结构体引入
10.2 结构体变量的使用
10.2.1 结构体变量的定义
10.2.2 结构体变量的引用
10.2.3 结构体变量的初始化
10.2.4 结构体变量的使用
10.3 结构体数组
10.4 结构体变量作为函数的参数和返回值
10.5 结构体和指针
10.5.1 指向结构体变量的指针
10.5.2 指向结构体数组的指针
10.5.3 指向结构体变量的指针作为函数参数
10.5.4 函数返回值为指向结构体变量的指针
10.6 动态内存分配与链表
10.6.1 动态内存函数
10.6.2 用指针处理链表
10.6.3 链表的定义
10.6.4 链表的基本操作
10.7 共用体类型
10.7.1 共用体类型的定义
10.7.2 共用体变量的定义
10.7.3 共用体变量的使用
10.7.4 共用体实例
10.8 枚举类型
10.8.1 枚举类型的定义
10.8.2 枚举变量的定义
10.8.3 枚举变量的赋值和使用
10.9 自定义类型
小结
习题10
第11章 位运算
11.1 位运算符概述
11.1.1 与运算
11.1.2 或运算
11.1.3 异或运算
11.1.4 求反运算
11.1.5 移位运算
11.2 位运算赋值运算符
11.3 位域(位段)
11.3.1 位域的定义和位域变量的说明
11.3.2 位域的使用
小结
习题11
第12章 文件
12.1 文件概述
12.2 文件指针的定义
12.3 文件的基本操作
12.3.1 文件打开函数
12.3.2 文件关闭函数
12.3.3 文件检测函数
12.3.4 文件定位函数
12.3.5 字符读写函数
12.3.6 字符串读写函数
12.3.7 格式化读写函数
12.3.8 数据块读写函数
12.4 综合程序设计
小结
习题12
附录A 常用字符与ASCII码对照表
附录B 扩展ASCII码对照表
附录C C关键字
附录D C语言的9种控制语句
附录E C运算符的优先级与结合性
附录F 常用的ANSI C标准库函数
参考文献