c语言实现输入3个学生5门课程的成绩,分别用函数实现下列功能: (1)在主函数main中实现3位同学5门课成绩的输入; (2)编写子函数Average_score,计算每一位学生的平均分; (3)编写子函数Average_course,计算每一门课的平均分; (4)子函数Average_score和Average_course在主函数main中调用。
时间: 2023-06-17 13:08:00 浏览: 187
下面是实现该功能的C语言代码:
```
#include <stdio.h>
#define STUDENT_NUM 3
#define COURSE_NUM 5
float Average_score(float scores[]);
float Average_course(float scores[][COURSE_NUM]);
int main() {
float scores[STUDENT_NUM][COURSE_NUM];
// 输入每位同学的成绩
for (int i = 0; i < STUDENT_NUM; i++) {
printf("请输入第%d位同学的5门课成绩:\n", i + 1);
for (int j = 0; j < COURSE_NUM; j++) {
scanf("%f", &scores[i][j]);
}
}
// 计算每位同学的平均分并输出
for (int i = 0; i < STUDENT_NUM; i++) {
float avg_score = Average_score(scores[i]);
printf("第%d位同学的平均分为%.2f\n", i + 1, avg_score);
}
// 计算每门课的平均分并输出
for (int j = 0; j < COURSE_NUM; j++) {
float avg_course = Average_course(scores)[j];
printf("第%d门课的平均分为%.2f\n", j + 1, avg_course);
}
return 0;
}
// 计算每一位学生的平均分
float Average_score(float scores[]) {
float sum = 0.0;
for (int i = 0; i < COURSE_NUM; i++) {
sum += scores[i];
}
return sum / COURSE_NUM;
}
// 计算每一门课的平均分
float Average_course(float scores[][COURSE_NUM]) {
static float avg_course[COURSE_NUM];
for (int j = 0; j < COURSE_NUM; j++) {
float sum = 0.0;
for (int i = 0; i < STUDENT_NUM; i++) {
sum += scores[i][j];
}
avg_course[j] = sum / STUDENT_NUM;
}
return avg_course;
}
```
代码解释:
- 宏定义 `STUDENT_NUM` 和 `COURSE_NUM` 分别表示学生人数和课程数。
- `float scores[STUDENT_NUM][COURSE_NUM]` 用于存储每位同学的成绩。
- 主函数中使用嵌套循环分别输入每位同学的成绩,并调用 `Average_score` 和 `Average_course` 函数计算平均分。
- `Average_score` 函数用于计算每位学生的平均分,接收一个一维数组参数 `scores[]`,该数组表示一位学生的5门课成绩。
- `Average_course` 函数用于计算每门课的平均分,接收一个二维数组参数 `scores[][COURSE_NUM]`,该数组表示每位同学的5门课成绩。在函数内部使用了 `static` 关键字定义了一个静态数组 `avg_course`,用于存储每门课的平均分。
阅读全文