本书系统、全面地介绍了C语言程序设计的方法,共分9章。主要介绍了C语言的基本数据处理、基本输入输出、程序流程控制、函数、数组、指针、预编译命令、结构体与共用体及文件管理等内容。
随着计算机技术的飞速发展,计算机对社会的进步产生了巨大的影响。计算机教育已经是大学教育的重要组成部分,程序设计语言是打开计算机世界大门的钥匙。因此,众多高校都将C语言程序设计作为本科生的基础课程。C语言程序设计方法既是要求学生必须掌握的基础方法,也是进行计算思维方法的训练、问题的抽象表示和解决的重要工具。在C语言程序设计的教学过程中,通常是根据语言的语法体系展开教学活动,以语法、程序结构等作为教学的重点。在语言的学习过程中,虽然学习者对C语言的各种语法结构和程序的基本结构都能基本掌握,可对于如何从问题出发,进行抽象分析、设计求解方法等方面涉及不足,从而在实际应用中解决问题时,还是感觉无从下手,力不从心。这就要求程序设计语言的教学不仅要让学生掌握语言的语法结构和程序结构,还要提高学生的语言应用能力,提高对问题的抽象分析能力和语言的表达能力。对于程序设计语言的学习,不仅需要了解语言的语法细节,还需要不断深入地学习和理解基本的算法和计算形式,利用基本的算法解决一些身边的实际问题,从而提高语言的应用能力。在多年的教学实践中,我们对学生进一步学习的愿望有较为深刻的理解。为了更加有效地开展C语言程序设计的教学工作,不断提高学生对程序设计的认识、实践与应用能力,作者在长期的C语言课程教学过程中努力探索、大胆实践,在注重理论知识教学的同时,不断强化实验教学环节,形成了一整套行之有效的教学方法,并确立了具有自身特色的教学思想。
作为长期教学与实践经验的总结,作者编写并出版了《C语言程序设计教程》(后称《教程》)。从第1版至今,已经走过5个年头,《教程》得到了众多师生的支持和厚爱,他们提出了很多宝贵的建议和意见,我们在第1版的基础上,根据各方的反馈意见和学生进一步学习和实践的需求,重新改写部分章节,形成了《C语言程序设计教程(第2版)》。
在第2版中,不仅介绍了C语言的基本语法和程序结构,对C 语言中容易混淆和不易理解的知识点进行深入分析解释,同时介绍了程序设计的基本方法,总结了程序设计中的常用方法,在重要章节中设计了问题引入与分析环节,引导学习者带着问题学习C语言的知识点,进而编写出求解问题的完整程序,突出以问题为中心的讲授方式,并以案例驱动的方式,使学生带着问题去学习。将算法与数据结构紧密联系在一起,突出程序设计的基本方法。同时,我们更新了部分例题和练习题。在例题的讲解中,突出了问题的难易层次,引导学习者遵循着分析问题→设计算法→编写代码的步骤,学习程序设计的方法和技巧,突出实践编程能力。在练习题的设计上,不仅满足等级考试的需求,而且强化实践动手的能力。
本书系统、全面地介绍了C语言程序设计的方法,共分9 章。第1章主要介绍C语言的基本数据表示和处理; 第2章的主要内容是C语言中基本输入、输出的实现; 第3章在介绍常用的基本算法的基础上,注重讨论程序的控制流程和程序的基本结构; 第4章讨论函数; 第5章介绍数组; 在第6章中重点说明指针及指针数据的使用方法; 第7章讲述预处理编译命令,接着在第8章中引入结构体; 第9章中重点介绍文件及其操作等内容。本书内容全面,结构合理,通过实例对C语言的语法要点进行了详尽的阐述。
本书既可供C 语言初学者学习使用,也可供有一定经验的软件开发人员学习参考。
感谢王定成老师、廖灵芝老师和范春年老师为本书的编写提出了具有指导意义的帮助,感谢我校“C语言程序设计”课程的课程组教师对本书提出了许多富有建设性的意见与建议,并在文本校对等过程中做了大量工作。
另外,教材的出版不仅得到南京信息工程大学教材教务处教材基金的大力支持,而且得到清华大学出版社的大力支持与帮助,在此一并表示感谢!
对于本书的编写,我们深感责任重大。尽管希望尽己所能,但因作者水平所限,本书中仍有不足之处,恳请广大同行和读者批评指正。
编者
2015年8月
CONTENTS
第1章概述
1.1C语言的发展历史
1.1.1C语言的发展
1.1.2C语言的主要标准
1.2C语言程序的结构
1.3C语言程序的特点
1.4C语言程序的开发方法
1.4.1程序
1.4.2程序设计和程序设计语言
1.4.3程序开发方法
1.5VC++6.0环境下C语言程序上机调试
1.5.1编写源程序
1.5.2源程序文件编译
1.5.3目标文件连接
1.5.4程序执行
1.6DevC++环境下C语言程序上机调试
1.6.1DevC++编辑C源程序
1.6.2编译和运行C程序
本章小结
习题1
第2章数据类型、运算符和表达式
2.1问题引导
2.2常量与变量
2.2.1标识符命名
2.2.2常量
2.2.3变量
2.3整型数据
2.3.1整型常量
2.3.2整型变量
2.4浮点型数据
2.4.1浮点常量
2.4.2浮点变量
2.5字符型数据
2.5.1字符常量
2.5.2字符串常量
2.5.3转义字符
2.5.4字符变量
2.6运算符和表达式
2.6.1算术运算符
2.6.2自增和自减运算符
2.6.3关系运算符和逻辑运算符
2.6.4位操作符
2.6.5条件运算符
2.6.6逗号操作符
2.6.7赋值运算符
2.6.8复合赋值运算符
2.6.9关于优先级的小结
2.7表达式求值
2.7.1算术表达式
2.7.2赋值表达式
2.7.3关系表达式和逻辑表达式
本章小结
习题2
第3章算法和控制语句
3.1问题引导
3.1.1算法的概念
3.1.2算法的表示
3.1.3算法举例
3.1.43种基本结构
3.2C语言的标准输入和输出
3.2.1格式化输入输出
3.2.2其他输入输出
3.2.3C语言语句
3.2.4顺序结构程序设计
3.3条件语句
3.3.1if语句
3.3.2if…else语句
3.3.3if…else if语句
3.3.4条件语句的嵌套
3.3.5条件语句的应用
3.4多分支语句
3.4.1switch多分支语句
3.4.2多分支语句的嵌套
3.4.3多分支语句应用
3.5循环语句
3.5.1while循环语句
3.5.2do…while循环语句
3.5.3for循环语句
3.5.4循环语句的嵌套
3.6转移语句
3.6.1goto语句
3.6.2continue和break语句
3.7综合应用
本章小结
习题3
第4章函数
4.1问题引导
4.2函数概述
4.3函数的声明和定义
4.3.1函数的类型说明
4.3.2函数的定义
4.4函数的参数和返回值
4.4.1函数的形式参数和实际参数
4.4.2函数的返回值
4.5函数的调用
4.5.1函数调用的一般形式
4.5.2函数调用方式
4.5.3函数的嵌套调用
4.5.4函数的递归调用
4.6局部变量和全局变量
4.6.1局部变量
4.6.2全局变量
4.7变量的存储类型
4.7.1动态存储与静态存储
4.7.2auto变量
4.7.3static变量
4.7.4register变量
4.7.5用extern声明外部变量
4.8内部函数和外部函数
4.8.1内部函数
4.8.2外部函数
4.9综合应用
本章小结
习题4
第5章数组
5.1问题引导
5.2一维数组
5.2.1一维数组的定义
5.2.2一维数组元素的引用
5.2.3数组的初始化
5.2.4利用一维数组解决问题
5.2.5向函数传递一维数组
5.2.6一维数组应用
5.3二维数组
5.3.1二维数组的声明
5.3.2二维数组的初始化
5.3.3二维数组应用
5.4字符数组
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.6变长数组
5.6.1不指定维长的数据初始化
5.6.2可变长数组及定义
5.7数组应用举例
本章小结
习题5
第6章指针
6.1指针与指针变量
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.5指针数组
6.6指针的地址分配
6.7指向指针的指针
6.8指向函数的指针变量
6.9main函数的参数
本章小结
习题6
第7章预编译命令
7.1概述
7.1.1宏定义
7.1.2无参宏定义
7.1.3带参宏定义
7.2include命令
7.3条件编译
本章小结
习题7
第8章结构体与共用体
8.1问题引导
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.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.7枚举类型和自定义类型
8.7.1枚举类型的定义和枚举变量的说明
8.7.2枚举类型变量的赋值和使用
8.8类型定义符typedef
8.9位段
8.9.1位域的定义和位域变量的说明
8.9.2位域的使用
8.10结构体的综合应用
本章小结
习题8
第9章文件系统
9.1文件和流的概念
9.1.1文件的定义
9.1.2流的定义
9.1.3文件的模式
9.2文件的使用
9.2.1文件的打开与关闭
9.2.2文件的读写操作
9.2.3文件指针的定位
9.2.4出错的检测
9.3文件系统应用举例
本章小结
习题9
附录A实验指导
附录B常用字符与ASCII码对应表
附录C运算符优先级和结合性
附录DC语言关键字
附录EC语言常用函数表
参考文献