若有n个学生m门课程成绩,编写一个C语言程序实现:(1)每个学生所有课程平均成绩、课程成绩最高分和最低分;(2)所有学生平均成绩、最高总分、最低总分。
时间: 2024-05-30 18:14:12 浏览: 207
这是一个很好的问题。要实现这个功能,你可以利用结构体来存储学生、课程和成绩数据,并使用循环和条件语句进行计算和比较。你可以参考以下伪代码:
struct Student {
int ID;
char name[20];
float grades[10];
float avg_grade;
float max_grade;
float min_grade;
};
void find_max_min_avg(struct Student *students, int n, int m) {
float total_grade = 0.0;
float max_total_grade = 0.0;
float min_total_grade = 1000.0;
int i, j;
for (i = 0; i < n; ++i) {
float sum = 0.0;
float max = 0.0;
float min = 100.0;
for (j = 0; j < m; ++j) {
float grade = students[i].grades[j];
sum += grade;
if (grade > max) {
max = grade;
}
if (grade < min) {
min = grade;
}
}
students[i].avg_grade = sum / m;
students[i].max_grade = max;
students[i].min_grade = min;
total_grade += students[i].avg_grade;
if (students[i].avg_grade > max_total_grade) {
max_total_grade = students[i].avg_grade;
}
if (students[i].avg_grade < min_total_grade) {
min_total_grade = students[i].avg_grade;
}
}
float avg_total_grade = total_grade / n;
printf("每个学生所有课程平均成绩、课程成绩最高分和最低分:\n");
for (i = 0; i < n; ++i) {
printf("学生%d:%s 平均成绩=%.2f 最高成绩=%.2f 最低成绩=%.2f\n", students[i].ID, students[i].name, students[i].avg_grade, students[i].max_grade, students[i].min_grade);
}
printf("所有学生平均成绩=%.2f 最高总分=%.2f 最低总分=%.2f\n", avg_total_grade, max_total_grade * m, min_total_grade * m);
}
感谢您的提问。
阅读全文