《C语言程序设计教程(第2版)》以“学生信息管理系统”案例贯穿全书,并以此为主线将C语言各章节的主要知识点有机结合,概念清晰、通俗易懂。全书共10章,内容包括:C语言概述、数据类型、分支结构程序设计、循环结构程序设计、数组、函数、指针、文件、编译预处理和用户定制数据类型。 《C语言程序设计教程(第2版)》采取案例驱动、设问解答、举例分析的组织方式,从实际应用系统开发的角度出发,由浅入深、循序渐进地培养读者在案例设计中的初步编程能力,帮助读者掌握C语言的语法知识,引导读者掌握大规模应用程序的编写方法。并配有多媒体课件、例题和习题源代码,并配有辅助教材。 《C语言程序设计教程(第2版)》适合作为高等学校各专业的C语言程序设计课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员参考。
C语言是目前最为流行的高级程序设计语言之一,是许多计算机专业人员和计算机爱好者学习程序设计语言的首选,因此,面向初学者,编写一本兼具可读性和实用性的C语言程序设计教材非常重要。本书具有以下特点:
(1)以"学生信息管理系统"案例为主线来组织教材内容,将C语言各章节的主要知识点有机地结合起来,形成一个整体,让读者充分理解各章节知识点之间的联系,做到学有所用、融会贯通。在案例的求解过程中,讲授程序设计的基本方法,侧重对模块化程序设计思想的介绍,并将软件工程相关的思想渗透其中,以提高读者编程解决实际问题的能力。
(2)选用的案例与学生联系紧密、易于理解,内容的讲解由问题驱动,让读者以当事人身份,从实际应用系统开发的角度来分析问题,由浅入深、循序渐进地引导读者掌握大规模应用程序的编写方法,让读者在饶有兴趣的案例设计中逐步培养编程能力、掌握C语言的语法知识。
(3)除了"学生信息管理系统"案例外,本书还精选了一些知识性、趣味性强的例子,如鸡兔同笼问题、百钱买百鸡问题、汉诺塔问题等,力图通过这些经典的实例来开拓读者思路、引导读者深入理解程序设计的基本思想、培养读者的计算思维能力。
(4)本书在写作上遵循学生的认知规律,力图避免以往教材的一些问题。以往教材通常是以语言知识为主线来组织教学内容、注重知识模块的完整性,这些教材的优点是内容系统、语法详尽,但忽略了对程序设计思想的训练,对语法的讲授,不是为应用而讲语法,而是为语法而讲语法,使学生普遍感觉C语言语法规则多、枯燥难懂,全部内容学完后,很多学生只能看懂小型程序,不能充分理解各章节知识点之间的联系,不能综合运用所学知识进行一个实际项目的开发。
(5)本书配有多媒体课件、例题和习题源代码,并配有辅助教材《C语言程序设计习题集(第2版)》,可供读者同步练习。习题集的每一章分两节,第一节为课后习题解答,第二节为等考模拟试题,每道题都附有答案,对稍难一点的试题还进行了解析和说明。试题的安排由易到难,课后习题部分相对简单,是学生需要熟练掌握的内容,等考模拟试题部分相对较难,能够满足"全国计算机等级考试二级C语言"的需要。
本书由龚本灿任主编并统稿,周治钰任副主编,参编人员有周治钰、吴西燕、任小燕、付云侠、宋建萍、王少蓉。参与本书讨论和校对工作的有赵昕、郭德明、杨华甫、杨景华、高蓉、冯家林、袁伟、丰京丹,叶华、石勇涛。在本书的编写过程中,董方敏教授和周学君副教授对书中内容提出了许多宝贵的意见和建议。在此对他们的支持和帮助表示衷心的感谢。
龚本灿,三峡大学计算机与信息学院教授,硕士生导师。1970年出生,博士,毕业于武汉理工大学计算机学院计算机应用技术专业。长期从事“C语言程序设计”、“计算机网络”等课程的教学工作,获校优秀教学奖和优秀教学成果奖4项。参与国家自然科学基金项目2项、湖北省研究项目2项、校科学基金项目2项,公开发表学术论文40余篇,其中SCI、EI检索10余篇。目前主要从事无线网络路由协议、网络安全和智能算法方面的研究。
第1章 C语言概述
1.1 计算机程序设计语言的发展
1.2 C语言的发展及特点
1.2.1 C语言的发展
1.2.2 C语言的特点
1.3 简单的C语言程序.
1.4 C语言程序的开发步骤及上机过程
1.4.1 C语言程序的开发步骤
1.4.2 C语言程序的上机过程
1.5 算法及其描述.
1.5.1 算法的概念
1.5.2 算法的描述
1.6 学生信息管理系统案例简介
本章小结
习题
第2章 数据类型
2.1 数据类型的分类
2.2 整型数据
2.2.1 整型变量
2.2.2 整型常量
2.3 实型数据
2.3.1 实型变量
2.3.2 实型常量
2.4 字符型数据
2.4.1 字符型变量
2.4.2 字符型常量
2.5 数据类型转换
2.6 格式化输入/输出函数
2.6.1 格式化输入函数
2.6.2 格式化输出函数
本章小结
习题
第3章 分支结构程序设计
3.1 关系运算符及其表达式
3.2 逻辑运算符及其表达式
3.3 if语句
3.3.1 单分支条件语句
3.3.2 双分支条件语句
3.3.3 多分支条件语句
3.3.4 if语句的嵌套
3.4 SWitch语句
3.5 运算符及其表达式
3.5.1 算术运算符及其表达式
3.5.2 赋值运算符及其表达式
3.5.3 条件运算符及其表达式
3.5.4 逗号运算符及其表达式
3.5.5 运算符的优先级和结合方向
3.6 案例分析与实现
本章小结
习题
第4章 循环结构程序设计
4.1 for语句
4.2 while语句
4.3 do-while语句
4.4 break语句和Continue语句
4.4.1 break语句
4.4.2 Continue语句
4.5 循环语句的嵌套
4.6 C语言程序的调试方法
4.7 案例分析与实现
本章小结
习题
第5章 数组
5.1 一维数组
5.1.1 一维数组的定义
5.1.2 一维数组的引用
5.1.3 一维数组的初始化
5.1.4 一维数组的应用举例
5.2 二维数组
5.2.1 二维数组的定义
5.2.2 二维数组的引用
5.2.3 二维数组的初始化
5.2.4 二维数组的应用举例
5.3 字符数组
5.3.1 字符数组的定义
5.3.2 字符数组的引用
5.3.3 字符数组的初始化
5.3.4 字符串输入/输出函数
5.3.5 字符串处理函数
5.4 排序算法
5.5 案例分析与实现
5.5.1 结构体类型
5.5.2 学生结构体数组的定义和引用
5.5.3 案例中部分功能模块的实现
本章小结
习题
第6章 函数
6.1 函数的定义、调用和声明
6.1.1 函数的定义
6.1.2 函数的调用
6.1.3 函数的声明
6.2 函数的应用举例
6.3 函数的递归调用
6.4 数组作为函数参数
6.4.1 数组元素作为函数实参
6.4.2 数组名作为函数实参
6.5 变量的作用域
6.5.1 局部变量
6.5.2 全局变量
6.6 变量的生存期
6.7 外部函数与内部函数
6.8 案例分析与实现
6.8.1 案例中的自定义函数简介
6.8.2 案例中函数之间的调用关系
6.8.3 案例中部分功能模块的实现
6.8.4 多文件的编译与连接
本章小结
习题
第7章 指针
7.1 指针概述
7.1.1 指针的概念
7.1.2 指针变量的定义和引用
7.1.3 指针变量作为函数参数
7.2 指向一维数组的指针
7.2.1 指向一维数组的指针变量的定义
7.2.2 指针变量的算术运算
7.2.3 指针变量的应用举例
7.2.4 指向字符串的指针
7.3 指向结构体的指针
7.3.1 指向结构体变量的指针
7.3.2 指向结构体数组的指针
7.4 返回指针的函数
7.5 动态内存分配
7.6 指针数组
7.7 指向二维数组的指针
7.7.1 二维数组的地址
7.7.2 指向二维数组的指针
7.8 指向函数的指针
7.9 指向指针的指针
7.10 案例分析与实现
7.10.1 链表简介
7.10.2 学生信息链表中结点的定义
7.10.3 学生信息链表的操作
本章小结
习题
第8章 文件
8.1 文件的基本知识
8.1.1 文件的概念
8.1.2 文件的分类
8.1.3 缓冲文件系统
8.2 文件的打开与关闭
8.2.1 文件的打开
8.2.2 文件的关闭
8.3 文件的读写操作
8.3.1 字符读写函数
8.3.2 字符串读写函数
8.3.3 格式化文件读写函数
8.3.4 数据块读写函数
8.4 文件的随机读写
8.5 案例分析与实现
本章小结
习题
第9章 编译预处理
9.1 宏定义
9.1.1 无参数的宏定义
9.1.2 有参数的宏定义
9.2 文件包含与案例分析
9.2.1 文件包含
9.2.2 案例分析
9.3 条件编译
本章小结
习题
第10章 用户定制数据类型
10.1 共用体类型
10.1.1 共用体类型的定义
10.1.2 共用体变量的定义和引用
10.2 枚举类型
10.2.1 枚举类型的定义
10.2.2 枚举变量的定义和引用
10.3 白定义类型名
10.4 位段与位运算
10.4.1 位段
10.4.2 位运算
本章小结
习题
附录A ASCII码表
附录B C运算符的优先级与结合性
附录C C语言常用库函数
附录D 学生信息管理系统源代码
参考文献