设计一个c语言代码统计8名学生的3门成绩和平均分,并按照平均分从大到小的顺序输出8名学生的3门成绩和平均分。
时间: 2024-03-16 14:47:19 浏览: 51
好的,我来给你设计一个 C 语言代码,可以帮你统计8名学生的3门成绩和平均分,并按照平均分从大到小的顺序输出8名学生的3门成绩和平均分。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 8 // 学生人数
#define M 3 // 科目数
// 计算平均分
float average(int score[])
{
int sum = 0;
for (int i = 0; i < M; i++) {
sum += score[i];
}
return (float)sum / M;
}
int main()
{
int scores[N][M]; // 存放学生成绩
float averages[N]; // 存放学生平均分
// 输入学生成绩
for (int i = 0; i < N; i++) {
printf("请输入第%d个学生的%d门成绩:", i+1, M);
for (int j = 0; j < M; j++) {
scanf("%d", &scores[i][j]);
}
averages[i] = average(scores[i]); // 计算平均分
}
// 按平均分从大到小排序
for (int i = 0; i < N-1; i++) {
for (int j = i+1; j < N; j++) {
if (averages[i] < averages[j]) {
// 交换平均分
float temp = averages[i];
averages[i] = averages[j];
averages[j] = temp;
// 交换成绩
int temp_scores[M];
for (int k = 0; k < M; k++) {
temp_scores[k] = scores[i][k];
scores[i][k] = scores[j][k];
scores[j][k] = temp_scores[k];
}
}
}
}
// 输出排序后的成绩和平均分
printf("排序后的成绩和平均分:\n");
for (int i = 0; i < N; i++) {
printf("第%d名学生的成绩为:", i+1);
for (int j = 0; j < M; j++) {
printf("%d ", scores[i][j]);
}
printf(",平均分为:%.2f\n", averages[i]);
}
return 0;
}
```
这个程序使用了一个二维数组来存放每个学生的三门成绩,还使用了一个一维数组来存放每个学生的平均分。首先输入每个学生的成绩并计算平均分,然后按照平均分从大到小排序,最后输出排序后的成绩和平均分。
阅读全文