C语言代码由键盘任意输入5个学生的姓名、学号、以及每一个学生的4门功课的成绩,分别计算他们的总分和均分,并将此表按总分的高低排序。
时间: 2024-05-01 13:19:36 浏览: 85
好的,我可以为你解答这个问题。以下是一个简单的C语言代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char name[50];
int num;
float score[4];
float total_score;
float avg_score;
};
void swap(struct student *a, struct student *b) {
struct student temp = *a;
*a = *b;
*b = temp;
}
int main() {
int i, j, n = 5;
struct student student_list[5];
// 输入学生信息
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、学号和分数:\n", i+1);
scanf("%s %d %f %f %f %f", &student_list[i].name, &student_list[i].num, &student_list[i].score[0], &student_list[i].score[1], &student_list[i].score[2], &student_list[i].score[3]);
// 计算总分和平均分
student_list[i].total_score = 0;
for (j = 0; j < 4; j++) {
student_list[i].total_score += student_list[i].score[j];
}
student_list[i].avg_score = student_list[i].total_score / 4;
}
// 冒泡排序,按总分排序
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (student_list[j].total_score < student_list[j+1].total_score) {
swap(&student_list[j], &student_list[j+1]);
}
}
}
// 输出排序结果
printf("按总分排序的结果为:\n");
for (i = 0; i < n; i++) {
printf("%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student_list[i].name, student_list[i].num, student_list[i].score[0], student_list[i].score[1], student_list[i].score[2], student_list[i].score[3], student_list[i].total_score);
}
return 0;
}
```
当你运行这个代码时,它会要求你逐个输入每个学生的姓名、学号和分数,然后计算他们的总分和平均分,并按照总分降序排列输出。注意,这个实现是最简单的方法,可能还有更优雅和更高效的实现方式。
阅读全文