0
样
《C语言程序设计案例教程》(第四版)是“十四五”职业教育国家规划教材、“十三五”职业教育国家规划教材、“十二五”职业教育国家规划教材。本教材采用“案例导入+知识学习+综合应用+自测练习”的四位一体教学模式组织教学内容。每章安排“模仿练习”和“拓展训练”两个层次的实训环节,用于模仿、验证概念、语法规则及其应用,以适应自主学习、合作学习和个性化教学。前6章选择与章节内容关联的小案例,作为问题引入;从第7章开始,以综合案例“学生成绩管理系统”为任务驱动,伴随系统的设计、开发、优化到最后完善,读者可以快速掌握C语言基础知识,破解难点,在职业情境中实现知识构建。
《C语言程序设计案例教程》(第四版)是“十四五”职业教育国家规划教材、“十三五”职业教育国家规划教材、“十二五”职业教育国家规划教材,也是高等职业教育计算机应用技术专业系列规划教材之一。
《C语言程序设计案例教程》(第四版)是在第三版的基础上,不断融合新思想、新技术完成的。
本教材全面贯彻党的二十大和全国职业教育大会精神,落实《国家职业教育改革实施方案》《深化新时代职业教育“双师型”教师队伍建设改革实施方案》《关于推进现代职业教育高质量发展的意见》;严格按照《中华人民共和国职业教育法》要求,落实立德树人根本任务,以“实用、趣味、创新”为追求,将社会主义核心价值观、职业道德、工匠精神、团队合作等方面确定为引入课堂的思政元素,推进习近平新时代中国特色社会主义思想进教材、进课堂、进头脑。在教学中因势利导、潜移默化地引导学生将个人的成才梦有机融入实现中华民族伟大复兴的中国梦的思想认识中。
本教材对部分案例做了调整和充实,尽可能通俗易懂。开发环境选用Dev-C++ 5.11。教材中的所有编辑、编译和运行图示均来自Dev-C++ 5.11开发环境。教材所有案例代码均按C99标准编写,教材中所有的源程序代码,同样适合其他开发环境。
C语言是目前应用非常广泛的高级程序设计语言,它是高等院校计算机类和电子信息类各专业的核心课程,在人才培养中占有重要的地位和作用。
本教材是国家级精品课程“C语言程序设计”的配套教材,在编写过程中吸收省示范性专业建设中的教学改革成果,不但注重知识的讲授,而且强调基本技能的训练和思政元素的融入。
本教材的编写理念是:以就业为导向,以学生为主体,着眼于学生职业生涯发展,注重职业素养的培养,兼顾思政元素的适度融入。本教材采用“案例导入+知识学习+综合应用+自测练习”的四位一体教学模式组织教学内容。每章安排“模仿练习”和“拓展训练”两个层次的实训环节,用于模仿、验证概念、语法规则及其应用,以适应自主学习、合作学习和个性化教学。前6章选择与章节内容关联的小案例,作为问题引入;从第7章开始,以综合案例“学生成绩管理系统”为任务驱动,伴随系统的设计、开发、优化到最后完善,读者可以快速掌握C语言基础知识,破解难点,在职业情境中实现知识构建。
本教材具有如下特色:
1.作为一门专业基础课教材,主线上仍保留或沿袭理工科课程以“学科体系”为线索的指导思想,即在教材内容的知识结构上,依然以概念、定律、定理为线索进行组织,有别于专业技能课教材。
2.为了满足“以能力为中心”的培养目标要求,本教材改变传统基础课教材的编写方法,在掌握必需的理论知识的基础上,突出技术的综合应用能力培养,加强实践操作和技能训练。充分考虑高职学生特点和学习规律,精心设计经典有趣案例,采用案例教学和任务驱动方式,增加了“模仿练习”和“拓展训练”两个层次的实训环节,体现“做中学、做中教,教学做合一”的理论实践一体化思想,使学生的学习重心从“学会知识”扩展到“学会学习、掌握方法和培养能力”上。
3.“算法”是程序设计的灵魂,是程序设计方法的核心内容。本教材突破传统的知识内容归属问题,将“算法设计”渗透到教材的每一个案例中,从而培养学生的程序设计能力,掌握程序设计方法。
4.案例的选择遵循“实用、趣味、创新”的特点,部分来自企业和近几届蓝桥杯全国软件和信息技术专业人才大赛的变形考题。教材内容充分反映产业升级、技术进步和职业岗位变化的要求,体现新知识、新技术和新方法。
5.增设第二学习空间选学内容,每章针对似是而非的关联知识,做了较深层次的解答,使读者快速全面了解和掌握C语言程序设计技巧,希望能为读者快速成为程序设计专家有所帮助。
6.增设“素养小贴士”,将党的二十大报告中提出的“推进文化自信自强,铸就社会主义文化新辉煌”的精神融入教材,推进习近平新时代中国特色社会主义思想进教材、进课堂、进头脑。
本教材共10章,前5章介绍了C语言的基本概念、语法规则和程序设计方法;第6章至第10章分别介绍了数组,函数,结构体、共用体和枚举类型,指针,文件。
本教材配套立体化教学资源,主要包括微课、PPT电子课件、课堂教案、自我测试练习参考答案、模仿练习及拓展训练参考答案、例题及案例代码,方便教师授课和学生自学。
本教材既可以作为高职高专院校计算机相关专业C语言程序设计课程的教材,也可以作为高职本科和应用型本科相关专业学习C语言程序设计的教材,还可以作为蓝桥杯全国软件和信息技术专业人才大赛的参考指导书。
尽管我们在编写本教材的过程中做了很多努力,但由于水平所限,不当之处在所难免,恳请各位读者批评指正,并将意见和建议及时反馈给我们,以便下次修订时改进。
编 者
2026年6月于深圳职业技术大学
第1章 初识C语言 / 1
案例1 开篇例程:学生成绩管理系统 / 1
1.1 认知C程序 / 2
1.1.1 简单的C程序 / 3
1.1.2 C程序的结构 / 4
1.1.3 初识输入/输出语句 / 6
1.1.4 C程序的开发过程 / 7
1.2 C编程环境的安装 / 7
1.2.1 安装Dev-C++ 5.11 / 7
1.2.2 配置Dev-C++ 5.11 / 9
1.2.3 Dev-C++ 5.11的使用 / 11
1.3 程序设计基础* / 13
1.3.1 程序与算法 / 13
1.3.2 算法的描述 / 13
1.3.3 C编程规范 / 15
1.4 综合应用 / 17
案例1-1 珠算666 / 17
案例1-2 素数判定 / 19
第二知识空间:数制编码及编程环境选择* / 19
自我测试练习 / 23
第2章 数据类型、运算符与表达式 / 25
案例2 饮料交换问题 / 25
2.1 字符集、关键字和标识符 / 26
2.1.1 字符集 / 26
2.1.2 关键字(保留字) / 26
2.1.3 标识符(identifier) / 26
2.2 C语言的数据类型 / 27
2.2.1 数据分类 / 27
2.2.2 整型数据 / 27
2.2.3 实型数据 / 28
2.2.4 字符型数据 / 29
2.3 常量与变量 / 30
2.3.1 常 量 / 30
2.3.2 变 量 / 33
2.4 运算符与表达式 / 35
2.4.1 C语言运算符 / 35
2.4.2 算术运算符和算术表达式 / 35
2.4.3 数据间的混合运算与类型转换 / 38
2.4.4 位运算和位运算符* / 40
2.4.5 赋值运算符和赋值表达式 / 43
2.4.6 逗号运算符和逗号表达式 / 44
2.4.7 案例2的解答 / 46
2.5 综合应用 / 46
案例2-1 计算表达式a+=a*=a/=a-5的值 / 46
案例2-2 十进制数与二进制数的转换 / 47
第二知识空间:数据的字长及取值范围* / 48
自我测试练习 / 49
第3章 顺序结构 / 52
案例3 算术计算器 / 52
3.1 结构化程序设计的基本概念 / 53
3.1.1 三种基本结构 / 53
3.1.2 C语言的基本语句 / 54
3.2 顺序结构的基本语句 / 55
3.2.1 赋值语句 / 55
3.2.2 格式输出函数printf() / 55
3.2.3 格式输入函数scanf() / 59
3.2.4 字符输出函数putchar() / 62
3.2.5 字符输入函数getchar() / 63
3.2.6 案例3的解答 / 64
3.3 综合应用 / 65
案例3-1 字母的魔法变幻 / 65
案例3-2 求各位数字 / 66
案例3-3 纸币兑换 / 66
第二知识空间:编程方法和排错原则* / 67
自我测试练习 / 69
第4章 选择结构 / 71
案例4 谁是盗窃者 / 71
4.1 条件判断表达式 / 72
4.1.1 关系表达式 / 72
4.1.2 逻辑表达式 / 73
4.2 算术、关系、逻辑、赋值混合运算 / 75
4.3 选择结构 / 76
4.3.1 if语句 / 76
4.3.2 if语句的嵌套 / 79
4.3.3 条件运算符(?:) / 80
4.3.4 switch语句 / 81
4.3.5 案例4的解答 / 83
4.4 综合应用 / 84
案例4-1 身体质量指数 / 84
案例4-2 计算职员工资 / 85
案例4-3 解一元二次方程 / 87
第二知识空间:数值化示例* / 88
自我测试练习 / 89
第5章 循环结构 / 91
案例5 裁纸奔月 / 91
5.1 while循环语句 / 91
5.2 do-while循环语句 / 93
5.3 for循环语句 / 94
5.4 循环的嵌套 / 96
5.5 三种循环语句的比较 / 98
5.6 案例5的解答 / 99
5.7 循环控制 / 99
5.7.1 break与continue语句 / 100
5.7.2 goto语句和标号语句 / 102
5.8 综合应用 / 102
案例5-1 趣味古典数学问题 / 102
案例5-2 文字游戏 / 104
第二知识空间:逻辑推理* / 105
自我测试练习 / 107
第6章 数 组 / 109
案例6 十个小孩分糖 / 109
6.1 一维数组 / 110
6.1.1 一维数组的定义 / 110
6.1.2 一维数组的引用 / 110
6.1.3 一维数组的初始化 / 111
6.1.4 案例6的解答 / 112
6.2 二维数组 / 114
6.2.1 二维数组的定义 / 114
6.2.2 二维数组的引用 / 115
6.2.3 二维数组的初始化 / 115
6.3 字符数组与字符串 / 117
6.3.1 字符数组的定义 / 117
6.3.2 字符数组的引用 / 117
6.3.3 字符数组的初始化 / 117
6.3.4 字符串 / 118
6.3.5 字符串处理函数 / 120
6.4 综合应用 / 123
案例6-1 冒泡排序 / 123
案例6-2 数制的转换 / 125
第二知识空间:五砝码问题* / 126
自我测试练习 / 128
第7章 函 数 / 130
案例7 设计学生成绩管理系统 / 130
7.1 函数的定义与声明 / 131
7.1.1 函数的定义 / 131
7.1.2 函数的声明 / 132
7.2 函数的参数及返回值 / 133
7.2.1 函数的形式参数和实际参数 / 133
7.2.2 函数的返回值 / 134
7.3 函数的调用 / 135
7.3.1 传值调用 / 135
7.3.2 嵌套调用 / 137
7.3.3 递归调用 / 138
7.3.4 传地址调用 / 140
7.4 学生成绩管理系统的结构设计 / 141
7.4.1 菜单显示模块 / 141
7.4.2 系统的功能模块 / 141
7.4.3 主函数main() / 142
7.5 变量的作用域与存储类型 / 143
7.5.1 变量的作用域 / 144
7.5.2 变量的存储类型 / 145
7.6 内部函数和外部函数 / 149
7.6.1 内部函数 / 149
7.6.2 外部函数 / 149
7.6.3 多文件组织的编译和连接 / 150
7.7 编译预处理 / 150
7.7.1 include命令 / 150
7.7.2 define命令 / 152
7.7.3 条件编译 / 154
7.8 综合应用 / 156
案例7-1 哥德巴赫猜想 / 156
案例7-2 求最大公约数 / 158
第二知识空间:功能键的读取* / 159
自我测试练习 / 161
第8章 结构体、共用体和枚举类型 / 165
案例8 学生成绩管理系统的实现 / 165
8.1 结构体 / 166
8.1.1 结构体类型的定义 / 166
8.1.2 结构体变量的定义 / 167
8.1.3 结构体变量的引用 / 169
8.1.4 结构体变量的初始化 / 170
8.2 结构体数组 / 171
8.2.1 结构体数组的定义 / 172
8.2.2 结构体数组的引用 / 172
8.2.3 结构体数组的初始化 / 174
8.3 结构体和函数 / 175
8.3.1 结构体变量作为函数参数 / 175
8.3.2 结构体数组作为函数参数 / 176
8.3.3 函数的返回值是结构体类型变量 / 177
8.4 学生成绩管理系统的实现 / 178
8.4.1 存储结构设计 / 178
8.4.2 主程序框架的修改 / 178
8.4.3 编写功能模块函数 / 179
8.5 共用体(union) / 183
8.5.1 共用体变量的定义 / 183
8.5.2 共用体变量的引用 / 184
8.6 枚举类型 / 186
8.6.1 枚举类型的定义 / 186
8.6.2 枚举变量的定义 / 187
8.7 类型定义 / 188
8.7.1 定义基本类型的别名 / 188
8.7.2 定义自定义的数据类型的别名 / 188
8.7.3 类型定义的一般步骤 / 188
8.8 综合应用 / 189
案例8-1 结构体的嵌套 / 189
案例8-2 排序程序 / 191
第二知识空间:内存对齐* / 193
自我测试练习 / 195
第9章 指 针 / 197
案例9 学生成绩管理系统的优化 / 197
9.1 指针相关概念 / 198
9.2 指针变量的定义与引用 / 199
9.2.1 指针变量的定义及初始化 / 199
9.2.2 指针运算符及指针运算 / 200
9.2.3 指针变量作为函数参数 / 202
9.3 用指针处理数组 / 204
9.3.1 数组的指针和指向数组的指针变量 / 204
9.3.2 数组元素的引用 / 205
9.3.3 数组名作为函数参数 / 207
9.3.4 指针与字符串 / 209
9.3.5 指针数组* / 210
9.4 指针与结构体 / 212
9.4.1 指向结构体变量的指针 / 212
9.4.2 指向结构体数组的指针 / 213
9.4.3 指向结构体的指针作为函数参数 / 214
9.4.4 学生成绩管理系统的优化 / 215
9.5 线性链表* / 216
9.5.1 链表概述 / 216
9.5.2 静态链表 / 218
9.5.3 动态链表 / 219
9.5.4 链表输出 / 220
9.6 指针与函数 / 222
9.6.1 函数的返回值是指针类型 / 222
9.6.2 指向函数的指针变量 / 223
9.6.3 指向函数的指针变量做函数参数 / 224
9.7 综合应用 / 226
案例9-1 函数多值带回 / 226
案例9-2 字符串连接函数 / 227
案例9-3 回文串的判定 / 229
案例9-4 单链表节点的删除和插入* / 230
第二知识空间:指针的安全使用* / 233
自我测试练习 / 235
第10章 文 件 / 238
案例10 收官篇:用文件完善学生成绩管理系统 / 238
10.1 文件的基本知识 / 239
10.1.1 文件的存储方式 / 239
10.1.2 文件的处理方式 / 239
10.1.3 文件类型指针 / 240
10.2 文件的打开和关闭 / 240
10.2.1 文件的打开 / 241
10.2.2 文件的关闭 / 242
10.3 顺序读写数据文件 / 242
10.3.1 对文件读写一个字符 / 242
10.3.2 对文件读写一个字符串 / 245
10.3.3 二进制文件的读写 / 246
10.3.4 文本文件的格式化读写 / 248
10.4 随机读写数据文件 / 250
10.4.1 文件的定位 / 250
10.4.2 随机读写文件 / 251
10.5 学生成绩管理系统的数据存取 / 252
10.5.1 添加写文件函数 / 252
10.5.2 添加读文件函数 / 252
10.5.3 修改主函数 / 253
10.6 综合应用 / 254
案例10-1 文本文件加密 / 254
案例10-2 二进制文件的复制 / 255
案例10-3 随机读写文件 / 257
第二知识空间:认识return语句和exit函数* / 258
自我测试练习 / 259
参考文献 / 261
附 录 / 262
附录A ASCII码表 / 262
附录B C语言运算符的优先级和结合性 / 263
附录C 常用库函数 / 264




