项目1 学生成绩的总分与平均分的计算 1
任务1-1 学生成绩的输入/输出 2
任务提出及实现 2
1.任务提出 2
2.具体实现 2
相关知识 2
1.C语言的结构 2
2.C语言运行环境及运行方法 3
3.数据类型 4
4.格式输出函数——printf()函数 5
5.格式输入函数——scanf()函数 7
知识扩展 9
1.转义字符 9
2.格式化输出 9
3.单个字符的输入/输出 11
4.字符串常量 12
举一反三 13
实践训练 15
初级训练 15
深入训练 16
任务1-2 总分及平均分的计算 18
任务提出及实现 18
1.任务提出 18
2.具体实现 18
相关知识 19
1.算术运算符和算术表达式 19
2.赋值运算和赋值表达式 20
3.自增、自减及逗号运算符 21
举一反三 23
实践训练 27
初级训练 27
深入训练 28
综合训练一 30
项目2 输入学生成绩转化为等级 32
任务2-1 输入学生成绩,判断其合法性 33
任务要求与实现 33
1.任务要求 33
2.具体实现 33
相关知识 34
1.关系运算符与关系表达式 34
2.逻辑运算符与逻辑表达式 35
3.条件语句 36
4.条件运算符与条件表达式 39
实践训练 40
初级训练 40
深入训练 42
任务2-2 输入学生成绩转化为等级 43
任务提出及实现 43
1.任务提出 43
2.具体实现 43
相关知识 45
1.if语句的嵌套 45
2.switch语句 47
举一反三 50
实践训练 55
初级训练 55
深入训练 58
综合练习二 60
项目3 学生成绩的分组汇总 63
任务3-1 求一个小组学生成绩的总分及平均分 64
任务提出与实现 64
1.任务提出 64
2.具体实现 64
相关知识 65
1.while循环 65
2.do...while语句 69
3.for语句 71
知识扩展 74
1.for语句的多种表示方法 74
2.break语句 75
举一反三 76
实践训练 81
初步训练 82
深入训练 84
任务3-2 求每个小组学生成绩的总分及平均分 86
任务提出与实现 86
1.任务提出 86
2.具体实现 86
相关知识 87
1.常见的循环嵌套 87
2.循环嵌套的运用 88
3.循环嵌套的实例 90
举一反三 91
实践训练 93
初级训练 93
深入训练 95
综合练习三 96
项目4 学生成绩的排序 99
任务4-1 多位学生一门课成绩的输入/输出 100
任务提出及实现 100
1.任务提出 100
2.具体实现 100
相关知识 100
1.一维数组的定义 100
2.一维数组的引用 101
3.一维数组的初始化 103
举一反三 103
实践训练 106
初步训练 106
深入训练 108
任务4-2 多个学生一门课成绩的排序 109
任务提出及实现 109
1.任务提出 109
2.具体实现(为了程序运行方便,假设只有10位学生) 109
相关知识 110
1.求最高分 110
2.排序 111
举一反三 113
实践训练 116
初级训练 117
深入训练 120
任务4-3 学生姓名的输入/输出 122
任务提出与实现 122
1.任务提出 122
2.具体实现(为了程序运行简单,假设只有5位同学) 122
相关知识 123
1.一维字符数组 123
2.二维字符数组 126
知识扩展 127
1.字符串比较函数strcmp() 127
2.复制字符串函数strcpy() 127
举一反三 128
实践训练 131
初级训练 131
深入训练 132
任务4-4 多个学生多门课成绩的排序 134
任务提出及实现 134
1.任务提出 134
2.具体实现(为了在程序运行时方便,所以假设只有5位学生) 134
相关知识 136
1.二维数组的定义 136
2.二维数组的引用 136
3.二维数组的初始化 136
4.二维数组的应用 137
举一反三 140
实践训练 143
初步训练 143
深入训练 144
综合练习四 145
项目5 根据条件进行学生成绩汇总 147
任务5-1 统计小组一门课程的总分及平均分 149
任务提出及实现 149
1.任务提出 149
2.具体实现 149
相关知识 150
1.无参函数 150
2.空函数 154
3.有参函数 154
举一反三 157
实践训练 159
初级训练 159
深入训练 164
任务5-2 统计小组若干门课程的总分及平均分 166
任务提出与实现 166
1.任务提出 166
2.具体实现 166
相关知识 167
1.嵌套函数 167
2.嵌套函数应用 168
知识扩展 169
1.递归函数 169
2.递归函数的应用 169
举一反三 171
实践训练 173
初级训练 173
深入训练 177
任务5-3 输出排序后小组三门课成绩单 178
任务提出与实现 178
1.任务提出 178
2.具体实现(假设本小组只有5位同学) 178
相关知识 181
1.数组名作为函数参数 181
2.数组名作为函数参数的应用 183
举一反三 185
实践训练 187
初级训练 187
深入训练 189
综合训练五 190
项目6 用指针优化学生成绩排名 194
任务6-1 了解指针 194
任务提出与实现 194
1.任务提出 194
2.具体实现 195
相关知识 195
1.地址和指针的概念 195
2.指向变量的指针变量 196
3.指针变量作为函数参数 199
举一反三 200
实践训练 202
任务6-2 用指针优化全班同学一门课成绩的输入/输出 206
任务提出及实现 206
1.任务提出 206
2.具体实现(以10位学生为例) 206
相关知识 207
1.指向数组元素的指针 207
2.一维数组元素的指针访问方式 208
举一反三 211
实践训练 212
任务6-3 用指针优化某班同学三门课成绩的输入/输出 213
任务提出及实现 213
1.任务提出 213
2.具体实现 213
相关知识 214
1.二维数组的指针访问方式 214
2.二维数组的指针访问应用 215
举一反三 216
实践训练 217
任务6-4 用指针实现输出最高分的记录 219
任务提出及实现 219
1.任务提出 219
2.具体实现 219
相关知识 221
知识扩展 224
1.字符串的表示形式 225
2.用指针变量来实现对字符串的访问 226
举一反三 227
实践训练 229
综合训练六 232
项目7 学生成绩单制作 234
任务7-1 用结构体数组进行学生信息的输入/输出 235
任务提出及实现 235
1.任务提出 235
2.具体实现(为了程序运行方便,假设有5位同学) 235
相关知识 236
1.结构体类型 236
2.结构体变量的引用 237
3.结构体变量的初始化 238
4.结构体数组 239
5.指向结构体类型数据的指针 241
举一反三 243
实践训练 246
任务7-2 排序后的学生成绩单 249
任务提出及实现 249
1.任务提出 249
2.具体实现(为了程序运行方便,假设只有5位同学) 250
相关知识 251
举一反三 253
实践训练 256
综合训练七 259
项目8 学生成绩文件管理 261
任务8-1 将学生成绩顺序读写到文件中 261
任务提出及实现 261
1.任务提出 261
2.具体实现(为了程序运行方便,假设只有10位同学) 262
相关知识 263
1.文件的打开/关闭 263
2.文件的读写 265
举一反三 274
实践训练 275
任务8-2 将学生成绩随机读写到文件中 276
任务提出与实现 276
1.任务提出 276
2.具体实现(为了程序运行方便,假设只有10位学生) 276
相关知识 277
1.指针指向文件开头的函数(rewind()函数) 278
2.fseek()函数 278
举一反三 280
实践训练 281
综合训练八 281
附录A 运算符表 283
附录B 常用标准库函数 284
1.数学标准库函数(函数原型:math.h) 284
2.输入/输出库函数(函数原型:stdio.h) 284
3.字符函数与字符串函数(函数原型:string.h) 285
4.其他函数(函数原型:stdlib.h) 286
附录C ASCII字符编码表 287
参考文献 288