用c语言解答。输入10个学生3门课成绩,分别用函数实现下列功能: 1)计算每个学生的平均分; 2)计算每门课的平均分; 3)输出每门课成绩最高的学生分数。
时间: 2024-12-29 13:29:06 浏览: 5
在C语言中,我们可以创建结构体表示学生的信息,然后通过函数来实现上述功能。首先,我们定义一个学生结构体和相关的函数:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[50];
int score[3]; // 三门课程的成绩
} Student;
// 函数声明
void input_scores(Student scores[], int n); // 输入学生成绩
double calculate_average(Student scores[], int n); // 计算单个学生的平均分
double calculate_subject_average(int scores[], int size, int subject); // 计算一门课的平均分
void find_highest_score(int scores[], int n, int subject, char *name); // 找出最高分的学生及分数
int main() {
Student students[10]; // 存放10个学生信息
int n = 10; // 总人数
// 输入10个学生3门课的成绩
input_scores(students, n);
// 功能实现
for (int i = 0; i < 3; i++) {
double subject_avg = calculate_subject_average(students[0].score, n, i);
printf("第%d门课程的平均分:%.2f\n", i + 1, subject_avg);
find_highest_score(students[0].score, n, i, students[0].name); // 示例仅对第一个学生找最高分
}
return 0;
}
// 函数实现
void input_scores(Student scores[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入学生 %d 的名字:", i+1);
scanf("%s", scores[i].name);
for (int j = 0; j < 3; j++) {
printf("请输入第%d门课的成绩:", j + 1);
scanf("%d", &scores[i].score[j]);
}
}
}
double calculate_average(Student scores[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += scores[i].score[0] + scores[i].score[1] + scores[i].score[2];
}
return sum / (n * 3);
}
double calculate_subject_average(int scores[], int size, int subject_index) {
double sum = 0;
for (int i = 0; i < size; i++) {
sum += scores[i * 3 + subject_index];
}
return sum / size;
}
void find_highest_score(int scores[], int n, int subject, char *name) {
int max_score = scores[0];
int max_index = 0;
for (int i = 1; i < n; i++) {
if (scores[i * 3 + subject] > max_score) {
max_score = scores[i * 3 + subject];
max_index = i;
}
}
if (max_score == scores[0]) { // 如果当前学生就是最高分者
printf("最高分出现在%s的第%d门课上,得分为:%d\n", name, subject + 1, max_score);
} else {
printf("最高分出现在第%d名学生%s的第%d门课上,得分为:%d\n", max_index + 1, name[max_index], subject + 1, max_score);
}
}
```
这个程序实现了输入学生成绩、计算个人平均分、每门课平均分以及找出每门课最高分的功能。注意这只是一个示例,如果需要处理所有学生的情况,你需要遍历整个`students`数组。
阅读全文