已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩排序记录。用c语言写一下代码
时间: 2023-06-07 20:12:14 浏览: 110
好的,我会尽力回答你的问题,现在开始回答:
对于这个问题,我们可以用C语言编写代码解决。以下是示例代码:
```
#include<stdio.h>
// 定义学生数量和课程数量
#define NUM_OF_STUDENTS 5
#define NUM_OF_COURSES 4
// 计算学生平均成绩
void calculateAverage(float scores[][NUM_OF_COURSES], float averages[])
{
for(int i = 0; i < NUM_OF_STUDENTS; i++)
{
float sum = 0;
for(int j = 0; j < NUM_OF_COURSES; j++)
{
sum += scores[i][j];
}
//计算平均成绩
averages[i] = sum / NUM_OF_COURSES;
}
}
// 实现冒泡排序,从高到低排序平均分数并显示每个学生的成绩
void sortAndDisplay(float averages[], float scores[][NUM_OF_COURSES])
{
float temp;
for(int i = 0; i < NUM_OF_STUDENTS - 1; i++)
{
for(int j = 0; j < NUM_OF_STUDENTS - i - 1; j++)
{
if(averages[j] < averages[j+1])
{
// 定义排序规则: 从高到低排序
// 平均分数排序记录
temp = averages[j];
averages[j] = averages[j+1];
averages[j+1] = temp;
// 学生成绩排序记录
for(int k = 0; k < NUM_OF_COURSES; k++)
{
temp = scores[j][k];
scores[j][k] = scores[j+1][k];
scores[j+1][k] = temp;
}
}
}
}
// 显示排序后的记录
printf("各学生的成绩排序记录:\n");
for(int i = 0; i < NUM_OF_STUDENTS; i++)
{
printf("学生%d:平均成绩 %.2f 分,成绩依次为:", i+1, averages[i]);
for(int j = 0; j < NUM_OF_COURSES; j++)
{
printf("%.2f ", scores[i][j]);
}
printf("\n");
}
}
int main()
{
// 定义变量
float scores[NUM_OF_STUDENTS][NUM_OF_COURSES] = {0};
float averages[NUM_OF_STUDENTS] = {0};
// 输入成绩
for(int i = 0; i < NUM_OF_STUDENTS; i++)
{
printf("请输入第%d个学生的成绩(4门课):\n", i+1);
for(int j = 0; j < NUM_OF_COURSES; j++)
{
scanf("%f", &scores[i][j]);
}
}
//计算学生平均成绩
calculateAverage(scores, averages);
//排序并输出结果
sortAndDisplay(averages, scores);
return 0;
}
```
这个程序将从标准输入中读取每个学生的四门课程成绩并计算他们的平均成绩。然后,它将按照平均成绩从高到低排序,并打印每个学生的成绩排序记录。
希望可以帮到你,如果有什么不清楚的地方,可以继续问我哦!
阅读全文