《21世纪普通高校计算机公共课程规划教材:C语言程序设计》是将c语言作为入门语言的程序设计类课程编写的教材,以培养学生程序设计的基本能力为目标。全书共分为10章:c语言概述,c语言基本数据类型、运算符及表达式,简单程序设计,选择结构程序设计,循环结构程序设计,数组,函数与预处理,指针,结构体、共用体和枚举,文件。
《21世纪普通高校计算机公共课程规划教材:C语言程序设计》集作者多年的“c程序设计”课程的教学经验,全书组织精练、内容全面、条理清晰;每章附有较多的图表和程序流程图,讲述力求理论联系实际、循序渐进、深入浅出、通俗易懂,注重培养读者分析问题和程序设计的能力,以及良好的程序设计风格和习惯,具有较强的实用性。
《21世纪普通高校计算机公共课程规划教材:C语言程序设计》可作为高等学校程序设计语言课程的教学用书,也可作为计算机等级考试的参考书,还可作为对c语言程序设计感兴趣的读者的自学用书。
C语言是一种结构化程序设计语言,它功能丰富、表达能力强、使用灵活、应用面广、可移植性好,既具有高级语言的特点,又具有低级语言的许多功能,既可以用来编写系统软件,也可以用来编写应用软件。C语言作为一门较为通用的编程语言,得到越来越广泛的应用。目前,C语言程序设计被许多高校列为程序设计课程的首选,全国及各省市的计算机等级考试等都将C语言列入了考试范围。
本书是针对非计算机专业初学者的特点编写的,把提高编程能力、阅读程序的能力放在重要地位,避免在程序设计教学过程中陷入学习程序设计语言繁杂的语法和格式,而是将主要精力集中在所要解决的实际问题上,从知识点以及具体问题出发,重点讲述如何通过程序设计来解决问题。
本书是根据作者多年的教学经验和教学改革成果编写而成。全书以程序设计为主线,以编程应用为出发点,通过案例和问题引入内容,重点讲解程序设计的思想和方法,并介绍相关的语言知识,注重培养读者分析问题和程序设计的能力,注重培养良好的程序设计风格和习惯。本书讲述力求理论联系实际、循序渐进,全书通过大量例题验证语法和说明程序设计方法,并且为了使读者更好地掌握各章节内容,章末配有大量精选的习题。通过本书的学习和解题练习,读者既能迅速掌握C语言的基础知识,又能很快地学会C语言的编程技术,提高解决实际问题的能力。
为了更好地理解C语言编程的思想,将所学知识整体连贯,提高学生综合分析问题和解决问题的能力,为以后各种编程语言的学习打下坚实的基础,本教材安排了一个综合案例——学生成绩管理系统。综合案例的设计几乎涵盖了C语言的所有知识点,是对C语言的综合应用,是对所学知识的总结,旨在帮助读者掌握完整的课程脉络。
全书共分为10章,第1章为C语言概述,主要内容包括程序设计的概念、C语言的发展、特点和C程序的组成和运行步骤; 第2章为C语言基本数据类型、运算符及表达式,主要内容包括数据类型、数据类型转换、运算符与表达式; 第3章为简单程序设计,主要内容包括算法的概述、数据的输入与输出、顺序程序设计; 第4章为选择结构程序设计,主要内容包括关系运算符和关系表达式、逻辑运算符与逻辑表达式、if语句和switch语句的使用; 第5章为循环结构程序设计,主要内容包括复合赋值运算、自增自减运算、while型循环、dowhile型循环、for型循环、循环的嵌套、continue和break语句及三种控制结构的综合应用; 第6章为数组,主要内容包括一维数组、二维数组、多维数组、字符数组; 第7章为函数与预处理,主要内容包括函数概念、函数定义、函数间的参数传递、函数调用、函数变量的作用域、变量的存储类型、编译预处理(文件包含、宏定义); 第8章为指针,主要内容包括指针的含义、指针变量、指针与数组、指针与函数、指针与字符串、指向指针的指针; 第9章为结构体、共用体和枚举,主要内容包括结构体的定义和使用、共用体、枚举类型和使用typedef语句自定义数据类型; 第10章为文件,主要内容包括C文件的概述、文件的打开与关闭、文件的读写、文件的定位。
本书中的程序都是在Visual C++6.0编译环境下进行调试的,在其他C语言环境下基本上都可以运行通过。
作者还编写了配套的《C语言程序设计学习指导》一书,内容包括习题解答和实验指导。习题解答包括与教材配套的习题解答和解析、大量的练习与答案,以帮助读者巩固各章节知识点; 实验指导共有9个实验,每个实验内容又分为基础型实验、设计型实验和提高型实验,供不同程度的读者选作,在每个实验中还包括实验指导、设计分析、操作指导和常见问题分析,以帮助读者更好地理解实验内容,高质量地完成实验; 最后给出了实验思考题。
本书由天津城市建设学院彭慧卿副教授、邢振祥教授担任主编,天津城市建设学院彭慧卿编写第7、9章,刘琦编写第1、5章,李耀芳编写第2、3章,高晗编写第4、10章,戴华林编写第6章,戴春霞编写第8章。最后由彭慧卿统稿,邢振祥教授、孙莹光副教授审阅了全书并提出了宝贵意见。
在本书编写过程中,编者参考了大量有关C语言程序设计的书籍和资料,在此对这些参考文献的作者表示感谢。
由于编者水平有限,不足之处在所难免,恳请广大读者批评指正。
编者2012年11月
第1章 c语言概述
1.1 程序与程序设计语言
1.1.1 程序的基本概念
1.1.2 程序设计语言
1.2 c语言的历史背景
1.3 c语言的特性
1.4 c语言程序的基本结构
1.4.1 c语言程序的结构特点
1.4.2 程序设计风格
1.5 c语言编译环境介绍
1.5.1 visual c++6.0的启动
1.5.2 编辑源程序
1.5.3 编译、连接和执行
1.5.4 关闭工作区
习题
第2章 c语言基本数据类型、运算符及表达式
2.1 标识符
2.1.1 字符集
2.1.2 c语言词汇
.2.2 c语言的数据类型
2.3 常量和变量
2.4 整型数据
2.4.1 整型常量
2.4.2 整型变量
2.5 实型数据
2.5.1 实型常量
2.5.2 实型变量
2.6 字符型数据
2.6.1 字符常量
2.6.2 字符变量
2.7 运算符和表达式
2.7.1 简单赋值运算符及其表达式
2.7.2 算术运算符及其表达式
2.7.3 数据类型转换
2.7.4 位运算符及其表达式
习题
第3章 简单程序设计
3.1 算法
3.1.1 算法的概念
3.1.2 算法的描述
3.2 结构化程序设计
3.2.1 c语言程序结构分类
3.2.2 c语言语句分类
3.3 数据输入输出
3.3.1 格式输出函数printf
3.3.2 格式输入函数scanf
3.4 字符数据的输入输出
3.5 顺序结构程序设计
习题
第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-else语句
4.4 if语句的嵌套
4.5 switch语句
4.6 选择结构应用举例
习题
第5章 循环结构程序设计
5.1 循环的概念
5.2 for语句
5.2.1 for语句的结构
5.2.2 复合赋值运算
5.2.3 自增和自减运算
5.2.4 逗号运算
5.3 while语句
5.4 do-while语句
5.5 如何跳出循环结构
5.6 循环的嵌套
5.7 三种循环的比较
5.7.1 循环语句的选择
5.7.2 无限循环
5.8 循环结构应用实例
习题
第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.3 字符数组
6.3.1 字符数组的定义与初始化
6.3.2 字符串
6.3.3 字符串的操作
6.3.4 字符串处理函数
6.3.5 字符数组程序举例
习题
第7章 函数与预处理
7.1 模块化程序设计方法
7.2 库函数介绍
7.3 用户自定义函数的基本概念
7.3.1 函数的定义
7.3.2 形参和实参
7.3.3 函数的返回值
7.4 函数的调用
7.4.1 函数的调用形式
7.4.2 函数的调用过程
7.4.3 函数的声明
7.5 函数的参数传递
7.5.1 值传递
7.5.2 地址传递
7.6 函数的嵌套调用和递归调用
7.6.1 函数的嵌套调用
7.6.2 函数的递归调用
7.7 变量的作用域和存储类别
7.7.1 变量的作用域
7.7.2 变量的存储类别
7.8 预处理命令
7.8.1 宏定义
7.8.2 文件包含
7.9 大程序的组成
7.9.1 c程序的组成
7.9.2 源文件间的通信
7.1 0应用举例
习题
第8章 指针
8.1 变量的地址和指针
8.2 指针变量
8.2.1 指针变量的定义和初始化
8.2.2 指针的运算
8.3 指针和数组
8.3.1 指针和一维数组
8.3.2 指针和二维数组
8.4 指针与字符串
8.4.1 字符指针
8.4.2 字符指针与字符数组
8.5 指针与函数
8.5.1 指针作为函数的参数
8.5.2 数组名与指针作为函数参数的比较
8.5.3 指针型函数
8.5.4 指向函数的指针
8.6 指向指针的指针和指针数组
8.6.1 指向指针的指针
8.6.2 指针数组
8.6.3 行指针
8.7 main函数的形参
习题
第9章 结构体、共用体和枚举
9.1 结构体类型的定义
9.2 结构体变量的定义和使用
9.2.1 结构体变量的定义
9.2.2 结构体变量的引用
9.2.3 结构体变量的初始化
9.2.4 结构体变量作为函数参数
9.3 结构体数组
9.3.1 结构体数组的定义及初始化
9.3.2 结构体数组应用举例
9.4 结构体指针
9.4.1 指向结构体变量的指针
9.4.2 指向结构体数组的指针
9.4.3 结构体指针作为函数参数
9.5 共用体类型
9.5.1 共用体的概念
9.5.2 共用体类型定义和变量定义
9.6 枚举类型
9.6.1 枚举类型变量的定义
9.6.2 枚举类型的应用
9.7 用typedef自定义数据类型
习题
第10章 文件
10.1 文件概述
10.1.1 文件的概念
10.1.2 文件的分类
10.1.3 缓冲文件系统
10.1.4 文件指针
10.1.5 文件的操作顺序
10.2 文件操作
10.2.1 文件的打开和关闭
10.2.2 文件的顺序读/写
10.2.3 文件的定位与随机读写
10.3 文件应用综合实例
习题
附录a 标准字符与ascii代码对照表
附录b 运算符的优先级和结合性
附录c 常用库函数
参考文献