用c语言输入全班6个学生每人3门功课的成绩,计算个人平均成绩,并按名次排序输出。
时间: 2024-03-01 22:53:47 浏览: 132
计算学生的平均成绩(c语言)
3星 · 编辑精心推荐
可以使用结构体来记录每个学生的成绩,并使用冒泡排序对学生按照平均成绩进行排序。下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 6
#define MAX_NAME_LENGTH 20
struct student {
char name[MAX_NAME_LENGTH];
float scores[3];
float average;
};
void bubble_sort(struct student students[], int n);
int main() {
struct student students[MAX_STUDENTS];
int i, j;
// 输入每个学生的成绩
for (i = 0; i < MAX_STUDENTS; i++) {
printf("请输入第%d个学生的姓名和三门功课的成绩:\n", i + 1);
scanf("%s%f%f%f", students[i].name, &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
// 计算平均成绩
students[i].average = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3.0;
}
// 按照平均成绩排序
bubble_sort(students, MAX_STUDENTS);
// 输出排序后的结果
printf("按照平均成绩排序后的结果为:\n");
printf("名次\t姓名\t平均成绩\n");
for (i = 0; i < MAX_STUDENTS; i++) {
printf("%d\t%s\t%.1f\n", i + 1, students[i].name, students[i].average);
}
return 0;
}
// 冒泡排序
void bubble_sort(struct student students[], int n) {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].average < students[j + 1].average) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
```
这个程序使用结构体`student`来记录每个学生的姓名、三门功课的成绩和平均成绩。首先,使用`scanf()`函数输入每个学生的成绩,并计算平均成绩;然后使用冒泡排序按照平均成绩对学生进行排序;最后输出排序后的结果。
阅读全文