用c语言实现由键盘任意输入5个学生的姓名、学号、以及每一个学生的4门功课的成绩,分别计算他们的总分和均分,并将此表按总分的高低排序。
时间: 2024-05-15 13:17:44 浏览: 13
好的,我明白了,以下是C语言实现的代码:
```
#include<stdio.h>
#include<string.h>
struct student {
char name[20]; //姓名
int id; //学号
int score[4]; //4门功课成绩
int total; //总分
float average; //平均分
};
int main() {
struct student s[5], temp;
int i, j, sum;
//循环输入5个学生信息,包括姓名、学号和4门功课成绩
for(i=0;i<5;i++) {
printf("\n请输入学生%d的姓名、学号以及每门科目的成绩:\n", i+1);
scanf("%s %d %d %d %d", &s[i].name, &s[i].id, &s[i].score[0], &s[i].score[1], &s[i].score[2], &s[i].score[3]);
s[i].total = s[i].score[0] + s[i].score[1] + s[i].score[2] + s[i].score[3]; //计算总分
s[i].average = s[i].total / 4.0; //计算平均分
}
//按照总分从高到低排序
for(i=0;i<4;i++) { //冒泡排序
for(j=i+1;j<5;j++) {
if(s[i].total < s[j].total) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
//输出结果
printf("\n排序后的学生信息如下:\n");
for(i=0;i<5;i++) {
printf("\n姓名:%s\t学号:%d\n", s[i].name, s[i].id);
printf("科目1:%d\t科目2:%d\t科目3:%d\t科目4:%d\t总分:%d\t平均分:%.2f\n", s[i].score[0], s[i].score[1], s[i].score[2], s[i].score[3], s[i].total, s[i].average);
}
return 0;
}
```
请尽管问我关于这个问题的任何疑问,我会尽力解答。