0
样
C语言程序设计案例教程(第六版)是“十四五”职业教育国家规划教材、“十二五”职业教育国家规划教材、高职高专计算机教指委优秀教材,也是高等职业教育计算机应用技术专业系列规划教材之一。本教材以项目带动案例,强调C程序设计的实用性,共9个项目:学生成绩的输入和输出;成绩的计算;输入学生成绩转化为等级;学生成绩的分组汇总;使用函数调用各功能模块;用指针优化学生成绩排名;学生成绩单制作;学生成绩文件管理;学生成绩管理系统。将编程的理论和方法融入案例中。结合高职高专学生的特点,本书将C语言的基本概念、基本理论和编程的基本方法都尽量放在大量的案例中,各个案例不仅有详细的分析和注释,而且有完整的输入和输出结果显示。这种方法能使学生轻松地掌握那些枯燥的C语言的语句格式和功能。
《C语言程序设计案例教程》(第六版)是“十四五”职业教育国家规划教材、“十二五”职业教育国家规划教材、高职高专计算机教指委优秀教材,也是高等职业教育计算机应用技术专业系列规划教材之一。
党的二十大报告指出:我们要坚持教育优先发展、科技自立自强、人才引领驱动,加快建设教育强国、科技强国、人才强国,坚持为党育人、为国育才,全面提高人才自主培养质量,着力造就拔尖创新人才,聚天下英才而用之。培养软件开发技术技能型人才是时代赋予高职院校的使命,本教材将社会主义核心价值观、职业道德、工匠精神、团队合作等方面确定为引入课堂的思政元素,在教学中因势利导、潜移默化地引导学生将个人的成才梦有机融入实现中华民族伟大复兴中国梦的思想认识。
C语言是面向过程的程序设计语言,在面向对象的程序设计语言流行的今天,很多领域仍然有其不小的用武之地,比如目前广泛使用的MySQL数据库和UNIX以及Linux家族的操作系统等,以及大量的计算机外围接入设备的驱动程序,都离不开C语言。目前使用较广泛的Windows程序的API函数,也是以C语言函数的形式提供的。如果要写一个视频游戏引擎或操作系统,就需要C语言来完成编程任务,而不能使用C#、Java或Basic语言。
本教材在上一版的基础上,根据大量的教学反馈意见做了更为完善的修订。修订后的教材进一步加强项目驱动、案例教学的教学方法,剖析典型实训项目“学生成绩管理系统”,分解提炼项目的功能模块和程序,按照C语言的知识结构将知识点分配到各子项目中,使之既保留了程序设计的知识完整性和条理性,又结合了高职学生的实际情况,通过项目驱动、情景设置、案例引入,启发学生积极思维,调动学生学习程序设计的积极性,变被动学习为主动学习。通过项目分解、案例引入、启发式教学和主动学习训练,达到系统地学好和用好程序设计这门技术的目的。
本教材对理论定义、程序风格、习惯用语等进行了全面梳理、统一和部分重写,新版教材更具条理性、一致性、严谨性和科学性。
程序设计是非常重要的专业基础课,能否掌握C语言程序设计,将对后面的专业课程产生重要的影响;同时,它还是一门理论性和逻辑性强且比较抽象的课程。为了使学生学好这门课程,编者根据多年的教学经验,在教材编写上,注重以下一些方面:
1.本教材以VC++ 2010为开发环境,这为以后学习C++和C#等课程打好基础。
2.以项目带动案例,强调C语言程序设计的实用性。本教材的项目9属于“C语言课程设计”,该项目通过完整的“学生成绩管理系统”的分析研究、综合设计,以项目的功能模块为主线,将前面各子项目的内容组织起来,提高了学生C语言程序设计的综合运用能力。同时,将课程设计的知识点和模块尽量分解到前面各项目的案例中去,使学生在完成“C语言课程设计”时有一种水到渠成的感觉。
3.以情景设置、任务引入为切入点。各子项目不是从抽象的理论和概念出发,而是通过引入简单的任务,学生初步了解子项目将要学习的内容,并对知识点有一个初步的感性认识,从而提高学习的兴趣。
4.将编程的理论和方法融入项目中。结合高职学生的特点,本教材将C语言的基本概念、基本理论和编程的基本方法都尽量放在大量的项目案例中,各个项目案例不仅有详细的分析和注释,而且有完整的输入和输出结果显示,这种方法使学生能轻松地掌握枯燥的C语言的语句格式和功能。
5.针对学生的认知规律和学习过程,强调教材的完整性和系统性。各项目前导部分有教学目的、教学内容和重点难点,各项目的结束部分有小结、实验以及习题。
6.本教材的配套资源中附有全部电子教案、模拟试题库,有全部例题源程序和运行结果,还有习题的参考答案以及实验的参考答案等,为教师的备课和学生的学习提供了方便。
本教材的全部例题、习题、课程设计案例以及上机题均已经通过上机验证。
对计算机专业的高职院校学生来说,教师讲授本教材的全部内容,建议总学时是72课时,同时建议增加一到两周的课程设计时间。针对非计算机专业的高职院校学生,教师重点讲授前六个项目的内容,建议总学时是56课时。理论课和上机实验比例为1∶1。
本教材可作为高职院校学生“C语言程序设计”课程教学用书,也可作为大学本科非计算机专业的教材,还可以作为全国计算机等级考试及各类短训班的培训教材。
由于时间和水平有限,书中难免有不足之处,敬请读者朋友提出宝贵意见,以便修正。
编 者
2026年6月
项目1 学生成绩的输入和输出 / 1
任务 学生成绩的输入和输出实例 / 1
1.1 C程序介绍 / 2
1.1.1 程序和程序设计语言 / 2
1.1.2 简单的C程序 / 4
1.2 C程序的基本结构 / 7
1.3 基本输入和输出方法 / 8
1.3.1 字符输入函数getchar() / 8
1.3.2 字符输出函数putchar() / 8
1.3.3 格式输出函数printf() / 9
1.3.4 格式输入函数scanf() / 10
1.4 C程序的上机步骤 / 12
小结 / 13
实验 初识Visual C++ 2010环境及运行C程序 / 13
习题 / 21
项目2 成绩的计算 / 23
任务 成绩的计算实例 / 23
2.1 数据类型及表达式引例 / 24
2.2 C语言的数据类型 / 26
2.2.1 标识符、关键字及分隔符 / 26
2.2.2 数据类型 / 27
2.2.3 常量与变量 / 27
2.3 运算符及表达式 / 34
2.3.1 赋值运算符与赋值表达式 / 34
2.3.2 算术运算符与算术表达式 / 36
2.3.3 自增与自减运算符 / 37
2.3.4 关系运算符与关系表达式 / 37
2.3.5 逻辑运算符与逻辑表达式 / 38
2.3.6 条件运算符与条件表达式 / 39
2.3.7 逗号运算符与逗号表达式 / 40
2.3.8 求字节数运算符 / 41
2.4 实例解析 / 41
小结 / 43
实验 数据类型及表达式 / 43
习题 / 46
项目3 输入学生成绩转化为等级 / 48
任务 输入学生成绩,判断其合法性并将其转化为等级 / 48
3.1 顺序结构引例 / 51
3.2 顺序结构 / 52
3.3 选择结构引例 / 54
3.4 选择结构 / 55
3.4.1 单分支选择结构 / 55
3.4.2 双分支选择结构 / 56
3.4.3 多分支选择结构 / 57
3.5 循环结构引例 / 64
3.6 循环结构 / 65
3.6.1 while语句 / 65
3.6.2 do...while语句 / 67
3.6.3 for语句 / 68
3.6.4 循环语句的嵌套 / 71
3.6.5 break语句和continue语句 / 72
3.7 实例解析 / 75
3.8 结构化程序设计方法与综合实训 / 78
小结 / 81
实验 结构化程序设计 / 82
习题 / 85
项目4 学生成绩的分组汇总 / 89
任务1 求一个小组学生成绩的总分及平均分 / 89
4.1 数组引例 / 91
4.2 一维数组的定义和引用 / 91
4.2.1 一维数组的定义 / 91
4.2.2 一维数组的引用 / 92
任务2 求每个小组学生成绩的总分及平均分 / 94
4.3 二维数组的定义和引用 / 95
4.3.1 二维数组的定义 / 95
4.3.2 二维数组的引用 / 97
任务3 将小组学生按条件筛选 / 99
4.4 字符数组和字符串 / 100
4.4.1 一维字符数组 / 100
4.4.2 字符串 / 100
4.4.3 字符数组的引用 / 101
4.4.4 字符串输入和输出函数 / 101
4.4.5 常用字符串函数 / 102
4.5 实例解析 / 105
小结 / 109
实验 数 组 / 109
习题 / 110
项目5 使用函数调用各功能模块 / 114
任务 使用函数统计课程分数信息 / 114
5.1 函数应用实例 / 117
5.1.1 模块化设计 / 117
5.1.2 函数的基本概念 / 117
5.1.3 函数的引入实例 / 117
5.1.4 函数的分类 / 119
5.2 函数的定义 / 120
5.2.1 无参函数定义的一般形式 / 120
5.2.2 有参函数定义的一般形式 / 120
5.2.3 空函数 / 121
5.3 函数的参数和返回值 / 122
5.3.1 形式参数和实际参数 / 122
5.3.2 函数的返回值 / 123
5.4 函数调用 / 124
5.4.1 函数调用的一般形式 / 124
5.4.2 函数调用的方式 / 125
5.4.3 对被调用函数的声明和函数原型 / 125
5.5 函数的嵌套调用和递归调用 / 127
5.5.1 函数的嵌套调用实例 / 127
5.5.2 函数的嵌套调用说明 / 128
5.5.3 函数的递归调用实例 / 128
5.5.4 函数的递归调用说明 / 129
5.6 内部函数和外部函数 / 130
5.6.1 内部函数 / 130
5.6.2 外部函数 / 130
5.6.3 多个源文件的编译与连接 / 133
5.7 变量的作用域 / 134
5.7.1 局部变量 / 134
5.7.2 全局变量 / 135
5.8 变量的存储类别 / 137
5.8.1 动态存储和静态存储 / 137
5.8.2 动态存储举例 / 137
5.8.3 用static声明的局部变量 / 138
5.8.4 register变量 / 139
5.8.5 文件级外部变量和程序级外部变量 / 140
5.9 编译预处理 / 141
5.9.1 #include 命令 / 141
5.9.2 宏定义 / 141
5.9.3 条件编译 / 148
小结 / 149
实验 函数的应用 / 150
习题 / 150
项目6 用指针优化学生成绩排名 / 154
任务1 了解指针 / 154
6.1 关于指针的引例 / 156
6.2 指针与指针变量 / 157
6.2.1 指针与指针变量的基本概念 / 157
6.2.2 指针变量的类型说明 / 157
6.2.3 指针变量的赋值 / 158
6.2.4 指针变量的运算 / 158
任务2 指针应用 / 162
6.3 指针与数组 / 164
6.3.1 一维数组的指针表示方法 / 164
6.3.2 数组名和数组指针变量做函数参数 / 165
6.3.3 二维数组的指针表示方法 / 166
6.4 指针与字符串 / 167
6.4.1 字符串指针变量的说明和使用 / 167
6.4.2 使用字符串指针变量与字符数组的区别 / 169
6.4.3 指针数组 / 170
6.5 指针与函数 / 173
6.5.1 函数指针变量 / 173
6.5.2 指针型函数 / 174
6.6 指向指针的指针变量 / 176
6.7 指针的实例 / 177
小结 / 179
实验 指针程序设计实例 / 180
习题 / 182
项目7 学生成绩单制作 / 188
任务1 用结构体数组进行学生信息处理 / 188
7.1 结构体类型 / 190
7.1.1 结构体类型的实例 / 190
7.1.2 结构体类型的定义 / 190
7.2 结构体变量的定义和引用 / 192
7.2.1 结构体变量的定义和初始化 / 192
7.2.2 结构体变量成员的引用 / 194
7.3 结构体数组的定义和引用 / 197
7.3.1 结构体数组的定义和初始化 / 197
7.3.2 结构体数组元素成员的引用 / 198
任务2 求平均分最高的学生的学号、姓名并输出排序后的学生成绩单 / 200
7.4 指向结构体数据的指针变量的定义和引用 / 202
7.4.1 指向结构体变量的指针 / 202
7.4.2 指向结构体数组的指针 / 204
7.4.3 在函数间传递结构体数据 / 205
7.5 用指针处理链表 / 208
7.5.1 什么是链表 / 208
7.5.2 动态链表的基本操作 / 211
7.6 共用体 / 219
7.6.1 共用体的定义 / 219
7.6.2 共用体变量的定义 / 220
7.6.3 共用体变量的引用 / 221
7.7 枚举型 / 225
7.7.1 枚举型的定义 / 226
7.7.2 枚举型变量的定义 / 226
7.7.3 枚举型变量的引用 / 227
7.8 用户自定义类型 / 227
小结 / 230
实验 结构体、共用体应用程序设计实例 / 231
习题 / 232
项目8 学生成绩文件管理 / 237
任务1 将学生成绩顺序读写到文件中 / 237
8.1 文件的打开与关闭 / 240
8.1.1 文件的打开 / 240
8.1.2 文件的关闭 / 242
8.2 文件的读写 / 243
8.2.1 字符读写函数 / 244
8.2.2 数据读写函数 / 247
8.2.3 字符串读写函数 / 249
8.2.4 格式化读写函数 / 250
8.2.5 其他读写函数 / 252
任务2 将学生成绩随机读写到文件中 / 253
8.3 文件的定位 / 255
8.3.1 文件头定位函数 / 255
8.3.2 文件随机定位函数 / 255
8.3.3 流式文件的定位函数 / 255
8.3.4 判断文件结束函数feof / 256
8.4 文件的出错检测 / 256
8.4.1 ferror函数 / 256
8.4.2 clearerr函数 / 256
8.5 综合实训 / 257
8.5.1 实训内容 / 257
8.5.2 实训说明 / 257
8.5.3 程序分析 / 257
8.5.4 程序源码 / 258
小结 / 265
实验 文件操作 / 265
习题 / 266
项目9 学生成绩管理系统 / 272
9.1 课程设计任务书 / 272
9.2 学生成绩管理系统 / 273
小结 / 284
实验 小型会议管理程序 / 284
习题 / 285
参考文献 / 286
附 录 / 287
附录A 常用字符与ASCII码对照表 / 287
附录B C语言中的关键字 / 288
附录C 运算符的优先级与结合性 / 289




