代码:
#include <stdio.h>
// 计算每个学生的平均分
void calculateAverage(float scores[][4], float averages[], int numStudents) {
for (int i = 0; i < numStudents; i++) {
float sum = 0;
for (int j = 0; j < 4; j++) {
sum += scores[i][j];
}
averages[i] = sum / 4;
}
}
// 将平均分从高到低排序
void sortAverages(float averages[], int numStudents) {
for (int i = 0; i < numStudents - 1; i++) {
for (int j = 0; j < numStudents - i - 1; j++) {
if (averages[j] < averages[j + 1]) {
float temp = averages[j];
averages[j] = averages[j + 1];
averages[j + 1] = temp;
}
}
}
}
int main() {
int numStudents = 5;
float scores[numStudents][4];
float averages[numStudents];
// 输入每个学生的成绩
for (int i = 0; i < numStudents; i++) {
printf("请输入第%d个学生的4门课成绩:\n", i + 1);
for (int j = 0; j < 4; j++) {
scanf("%f", &scores[i][j]);
}
}
// 计算每个学生的平均分
calculateAverage(scores, averages, numStudents);
// 将平均分从高到低排序
sortAverages(averages, numStudents);
// 输出排序后的平均分
printf("按平均分从高到低排序的结果为:\n");
for (int i = 0; i < numStudents; i++) {
printf("第%d名学生的平均分为%.2f\n", i + 1, averages[i]);
}
return 0;
}
上述代码定义了两个函数:`calculateAverage()`用于计算每个学生的平均分,`sortAverages()`用于将平均分从高到低排序。在`main()`函数中,我们首先定义了需要输入的学生数量和成绩数组,然后通过循环依次输入每个学生的4门课成绩。接着调用`calculateAverage()`函数计算每个学生的平均分,并将结果存储在一个平均分数组中。最后,我们调用`sortAverages()`函数对平均分数组进行排序,并输出排序后的结果。
运行结果: