C语言输入5个学生的3门课的成绩,分别用函数实现下列功能: (1)计算每个学生平均分; (2)计算每门课的平均分; (3)找出所有15个分数中最高的分数所对应的学生和课程。
时间: 2024-01-01 09:05:31 浏览: 104
下面是一个实现上述功能的 C 代码:
```c
#include <stdio.h>
#define N 5
#define M 3
void input_scores(int scores[N][M]);
void calc_student_avg(int scores[N][M], float student_avg[N]);
void calc_course_avg(int scores[N][M], float course_avg[M]);
void find_highest_score(int scores[N][M], int *max_score, int *max_student, int *max_course);
int main()
{
int scores[N][M];
float student_avg[N];
float course_avg[M];
int max_score, max_student, max_course;
input_scores(scores);
calc_student_avg(scores, student_avg);
calc_course_avg(scores, course_avg);
find_highest_score(scores, &max_score, &max_student, &max_course);
printf("每个学生的平均分:\n");
for (int i = 0; i < N; i++) {
printf("学生%d:%.2f\n", i+1, student_avg[i]);
}
printf("每门课的平均分:\n");
for (int j = 0; j < M; j++) {
printf("课程%d:%.2f\n", j+1, course_avg[j]);
}
printf("最高分数为%d,对应的学生为%d,对应的课程为%d\n", max_score, max_student+1, max_course+1);
return 0;
}
void input_scores(int scores[N][M])
{
printf("请依次输入%d个学生的%d门课的成绩:\n", N, M);
for (int i = 0; i < N; i++) {
printf("学生%d:", i+1);
for (int j = 0; j < M; j++) {
scanf("%d", &scores[i][j]);
}
}
}
void calc_student_avg(int scores[N][M], float student_avg[N])
{
for (int i = 0; i < N; i++) {
int sum = 0;
for (int j = 0; j < M; j++) {
sum += scores[i][j];
}
student_avg[i] = (float)sum / M;
}
}
void calc_course_avg(int scores[N][M], float course_avg[M])
{
for (int j = 0; j < M; j++) {
int sum = 0;
for (int i = 0; i < N; i++) {
sum += scores[i][j];
}
course_avg[j] = (float)sum / N;
}
}
void find_highest_score(int scores[N][M], int *max_score, int *max_student, int *max_course)
{
*max_score = scores[0][0];
*max_student = 0;
*max_course = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (scores[i][j] > *max_score) {
*max_score = scores[i][j];
*max_student = i;
*max_course = j;
}
}
}
}
```
代码中定义了宏常量 `N` 和 `M`,分别表示学生数和课程数。在 `main()` 函数中,依次调用了 `input_scores()`、`calc_student_avg()`、`calc_course_avg()` 和 `find_highest_score()` 函数,分别完成输入学生成绩、计算每个学生平均分、计算每门课的平均分和找出最高分数所对应的学生和课程。
`input_scores()` 函数用来输入学生成绩,采用双重循环,先输入每个学生的成绩,再输入下一个学生的成绩。
`calc_student_avg()` 函数用来计算每个学生的平均分,采用双重循环,先计算每个学生的总分数,再除以课程数得到平均分。
`calc_course_avg()` 函数用来计算每门课的平均分,采用双重循环,先计算每门课的总分数,再除以学生数得到平均分。
`find_highest_score()` 函数用来找出最高分数所对应的学生和课程,采用双重循环,依次比较每个成绩和当前最高分数,如果当前成绩更高,则更新最高分数和对应的学生和课程。
最后在 `main()` 函数中输出结果。注意在输出最高分数所对应的学生和课程时,由于数组下标从 0 开始,需要加上 1。
阅读全文