C语言程序设计项目化教程 第2版
作者:周雅静,邢小英,徐济惠 编著
出版时间: 2019年版
内容简介
本教材采用工学结合、任务驱动的模式编写,以完成“学生成绩管理系统”为主线,设立循序渐进的 8个项目。通过项目分析又将其分成若干个具体的任务,每个任务包含着 C语言的若干个知识点和技能点,还有提高学生灵活应用能力的举一反三的实例,例如在前 5个项目中,配备一个“一年级小学生的加减运算题训练”的编程,更有提高自己解决问题及处理问题的实践训练。本教材强调“任务”的目标性和教学情境的创建 , 使学生带着真实的任务在探索中学习,以注重培养学生的实践能力为前提,理论知识传授遵循“实用为主、必需和够用为度”的准则,基本知识广而不深,基本技能贯穿教学的始终,具体采用“技能需求、问题引导、任务驱动”的方式。本教材既可以作为高职学生的教学用书,还可作为计算机爱好者的自学参考书和计算机培训班的教材。
目录
项目1 学生成绩的总分与平均分的计算 …………………………… 1
任务1-1 学生成绩的输入/输出 …………… 2
任务提出及实现 ……………………………… 2
1.任务提出 …………………… 2
2.具体实现 …………………… 2
相关知识 ……………………………………… 3
1.C语言程序的结构 …………… 3
2.C语言程序运行环境及运行方法 3
3.数据类型 …………………… 4
4.格式输出函数──printf()函数 … 6
5.格式输入函数──scanf()函数 … 7
知识扩展 ……………………………………… 9
1.转义字符 …………………… 9
2.格式化输出 ………………… 9
3.单个字符的输入/输出 ……… 11
4.字符串常量 ………………… 12
举一反三 ……………………………………… 13
实践训练 ……………………………………… 18
☆初级训练 ……………………… 18
☆深入训练 ……………………… 19
任务1-2 总分及平均分的计算……………… 21
任务提出及实现 ……………………………… 21
1.任务提出 …………………… 21
2.具体实现 …………………… 21
相关知识 ……………………………………… 22
1.算术运算符和算术表达式 … 22
2.赋值运算和赋值表达式 …… 23
3.自增、自减及逗号运算符 … 24
举一反三 ……………………………………… 26
实践训练 ……………………………………… 31
☆初级训练 ……………………… 31
☆深入训练 ……………………… 32
综合训练一 …………………………………… 35
项目2 输入学生成绩转化为等级 ……… 37
任务2-1 输入学生成绩,判断其合法性…… 38
任务提出及实现 ……………………………… 38
1.任务要求 …………………… 38
2.具体实现 …………………… 38
相关知识 ……………………………………… 39
1.关系运算符与关系表达式 … 39
2.逻辑运算符与逻辑表达式 … 40
3.条件语句 …………………… 41
4.条件运算符与条件表达式 … 44
举一反三 ……………………………………… 45
实践训练 ……………………………………… 51
☆初级训练 ……………………… 51
☆深入训练 ……………………… 54
任务2-2 将输入的学生成绩转化为等级…… 56
任务提出及实现 ……………………………… 56
1.任务提出 …………………… 56
2.具体实现 …………………… 56
相关知识 ……………………………………… 58
1.if语句的嵌套 ………………… 58
2.switch语句 …………………… 60
举一反三 ……………………………………… 63
实践训练 ……………………………………… 68
☆初级训练 ……………………… 68
☆深入训练 ……………………… 72
综合练习二 …………………………………… 73
项目3 学生成绩的分组汇总 …………… 76
任务3-1 求一个小组学生成绩的总分及平均分…………………………… 77
任务提出及实现 ……………………………… 77
1.任务提出 …………………… 77
2.具体实现 …………………… 78
相关知识 ……………………………………… 79
1.while循环 …………………… 79
2.do…while语句 ……………… 83
3.for语句 ……………………… 85
知识扩展 ……………………………………… 88
1.for 语句的多种表示方法 …… 88
2.break语句 …………………… 89
举一反三 ……………………………………… 90
实践训练 …………………………………… 100
☆初步训练 …………………… 100
☆深入训练 …………………… 103
任务3-2 求每个小组学生成绩的总分及平均分………………………… 105
任务提出及实现 …………………………… 105
1.任务提出 ………………… 105
2.具体实现 ………………… 106
相关知识 …………………………………… 107
1.常见的循环嵌套 ………… 107
2.循环嵌套的运用 ………… 108
3.循环嵌套的实例 ………… 110
举一反三 ………………………………………111
实践训练 …………………………………… 113
☆初级训练 …………………… 113
☆深入训练 …………………… 115
综合练习三 ………………………………… 116
项目4 多个学生成绩的排序 ………… 119
任务4-1 多个学生一门课成绩的输入 /输出 ……………………… 120
任务提出及实现 …………………………… 120
1.任务提出 ………………… 120
2.具体实现 ………………… 120
相关知识 …………………………………… 120
1.一维数组的定义 ………… 120
2.一维数组的引用 ………… 121
3.一维数组的初始化 ……… 123
举一反三 …………………………………… 123
实践训练 …………………………………… 130
☆初步训练 …………………… 130
☆深入训练 …………………… 132
任务4-2 多个学生一门课成绩
的排序…………………………… 133
任务提出及实现 …………………………… 133
1.任务提出 ………………… 133
2.具体实现 ………………… 133
相关知识 …………………………………… 134
1.求最高分 ………………… 134
2.排序 ……………………… 135
举一反三 …………………………………… 137
实践训练 …………………………………… 141
☆初级训练 …………………… 141
☆深入训练 …………………… 144
任务4-3 学生姓名的输入/输出 ………… 146
任务提出及实现 …………………………… 146
1.任务提出 ………………… 146
2.具体实现 ………………… 146
相关知识 …………………………………… 147
1.一维字符数组 …………… 147
2.二维字符数组 …………… 150
知识扩展 …………………………………… 150
1.字符串比较函数strcmp() … 151
2.复制字符串函数strcpy() … 152
举一反三 …………………………………… 153
实践训练 …………………………………… 156
☆初级训练 …………………… 156
☆深入训练 …………………… 157
任务4-4 多个学生多门课成绩的排序…………………………… 158
任务提出及实现 …………………………… 158
1.任务提出 ………………… 158
2.具体实现 …………………… 158
相关知识 …………………………………… 160
1.二维数组的定义 ………… 160
2.二维数组的引用 ………… 160
3.二维数组的初始化 ……… 160
4.二维数组的应用 ………… 161
举一反三 …………………………………… 164
实践训练 …………………………………… 167
☆初步训练 …………………… 167
☆深入训练 …………………… 168
综合练习四 ………………………………… 169
项目5 根据条件进行学生成绩汇总 …………………………… 171
任务5-1 统计小组一门课程的总分及平均分 …173
任务提出及实现 …………………………… 173
1.任务提出 ………………… 173
2.具体实现 ………………… 173
相关知识 …………………………………… 174
1.无参函数 ………………… 174
2.空函数 …………………… 178
3.有参函数 ………………… 178
举一反三 …………………………………… 181
实践训练 …………………………………… 185
☆初级训练 …………………… 185
☆深入训练 …………………… 190
任务5-2 统计小组若干门课程的总分及平均分………………………… 192
任务提出及实现 …………………………… 192
1.任务提出 ………………… 192
2.具体实现 ………………… 192
相关知识 …………………………………… 193
1.嵌套函数 ………………… 193
2.嵌套函数的应用 ………… 194
知识扩展 …………………………………… 195
1.递归函数 ………………… 195
2.递归函数的应用 ………… 195
举一反三 …………………………………… 197
实践训练 …………………………………… 199
☆初级训练 …………………… 199
☆深入训练 ………………… 203
任务5-3 输出排序后小组三门课的成绩单………………………… 204
任务提出及实现 …………………………… 204
1.任务提出 ……………… 204
2.具体实现 ………………… 205
相关知识 …………………………………… 207
1.数组名作为函数参数 …… 207
2.数组名作为函数参数的应用 209
举一反三 …………………………………… 212
实践训练 …………………………………… 214
☆初级训练 …………………… 214
☆深入训练 …………………… 215
综合训练五 ………………………………… 216
项目6 用指针优化学生成绩排名 …… 220
任务6-1 了解指针………………………… 221
任务提出及实现 …………………………… 221
1.任务提出 ………………… 221
2.具体实现 ………………… 221
相关知识 …………………………………… 221
1.地址和指针的概念 ……… 221
2.指向变量的指针变量 …… 223
3.指针变量作为函数参数 … 225
举一反三 …………………………………… 227
实践训练 …………………………………… 228
任务6-2 用指针优化全班同学一门课成绩的输入/输出 …………………… 232
任务提出及实现 …………………………… 232
1.任务提出 ………………… 232
2.具体实现 ………………… 232
相关知识 …………………………………… 233
1.指向数组元素的指针 …… 233
2.一维数组元素的指针访问方式 …………………… 235
举一反三 …………………………………… 237
实践训练 …………………………………… 238
任务6-3 用指针优化某班同学三门课成绩
的输入/输出 …………………… 239
任务提出及实现 …………………………… 239
1.任务提出 ……………… 239
2.具体实现 ………………… 239
相关知识 …………………………………… 241
1.二维数组的指针访问方式 241
2.二维数组的指针访问应用 241
举一反三 …………………………………… 242
实践训练 …………………………………… 243
任务6-4 用指针实现输出最高分的记录… 245
任务提出及实现 …………………………… 245
1.任务提出 ………………… 245
2.具体实现 ………………… 245
相关知识 …………………………………… 247
知识扩展 …………………………………… 250
1.字符串的表示形式 ……… 251
2.用指针变量来实现对字符串的访问 …………………… 252
举一反三 …………………………………… 253
实践训练 …………………………………… 255
综合训练六 ………………………………… 258
项目7 学生成绩单制作 ……………… 260
任务7-1 用结构体数组进行学生信息的输入/输出 …………………… 261
任务提出及实现 …………………………… 261
1.任务提出 ………………… 261
2.具体实现 ………………… 261
相关知识 …………………………………… 262
1.结构体类型 ……………… 262
2.结构体变量的引用 ……… 264
3.结构体变量的初始化 …… 264
4.结构体数组 ……………… 265
5.指向结构体类型数据的指针 ……………………… 267
举一反三 …………………………………… 270
实践训练 …………………………………… 272
任务7-2 输出排序后的学生成绩单……… 276
任务提出及实现 …………………………… 276
1.任务提出 ………………… 276
2.具体实现 ………………… 276
相关知识 …………………………………… 277
举一反三 …………………………………… 280
实践训练 …………………………………… 282
综合训练七 ………………………………… 285
项目8 学生成绩文件管理 …………… 287
任务8-1 将学生成绩顺序读写到文件中… 288
任务提出及实现 …………………………… 288
1.任务提出 ………………… 288
2.具体实现 ………………… 288
相关知识 …………………………………… 289
1.文件的打开/关闭 ………… 289
2.文件的读写 ……………… 291
举一反三 …………………………………… 300
实践训练 …………………………………… 301
任务8-2 将学生成绩随机读写到文件中… 302
任务提出及实现 …………………………… 302
1.任务提出 ……………… 302
2.具体实现 ………………… 302
相关知识 ……………………… 303
1.指针指向文件开头的函数(rewind()函数) …… 304
2.fseek()函数 ………………… 304
举一反三 …………………………………… 306
实践训练 …………………………………… 307
综合训练八 ………………………………… 307
附录A 运算符表 ……………………… 309
附录B 常用标准库函数 ……………… 310
1.数学标准库函数(函数原型:math.h) …… 310
2.输入/输出库函数(函数原型:stdio.h) …… 310
3.字符函数与字符串函数(函数原型:string.h) …… 311
4.其他函数(函数原型:stdlib.h) …… 312
附录C ASCII字符编码表 …………… 313
参考文献………………………………… 314