c语言由键盘任意输入5个学生的姓名、学号、以及每一个学生的4门功课的成绩,分别计算他们的总分和均分,并将此表按总分的高低排序。
时间: 2023-06-09 20:06:18 浏览: 121
好的,我知道了。您可以给我一些时间来处理您的问题。
请问您需要一个完整的C代码来解决这个问题吗?如果是的话,我可以为您提供一个范例代码。以下是解决此问题的步骤:
1. 首先,我们需要定义一个结构体来保存每个学生的信息,例如姓名、学号、4门课程的成绩、总分和平均分。
2. 然后,我们需要使用scanf函数从键盘输入每个学生的信息,并将其保存到相应的结构体中。
3. 接下来,我们需要计算每个学生的总分和平均分,并将它们保存到结构体中。
4. 最后,我们需要使用冒泡排序法将结构体按照总分排序。
下面是示范代码:
```
#include <stdio.h>
#include <string.h>
struct student{
char name[20];
int id;
float grade[4];
float total;
float average;
};
void bubble_sort(struct student *p, int n){ // 冒泡排序
int i, j;
struct student temp;
for (i = 0; i < n; i++){
for (j = 0; j < n - 1 - i; j++){
if ((p+j)->total < (p+j+1)->total){
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
int main(){
struct student stu[5];
int i, j;
// 输入学生信息
for (i = 0; i < 5; i++){
printf("请输入第%d个学生的姓名,学号,以及每一个学生的4门功课的成绩:\n", i+1);
scanf("%s %d", &stu[i].name, &stu[i].id);
stu[i].total = 0; // 初始化总分
stu[i].average = 0; // 初始化平均分
for (j = 0; j < 4; j++){
scanf("%f", &stu[i].grade[j]);
stu[i].total += stu[i].grade[j];
}
stu[i].average = stu[i].total / 4.0;
}
// 冒泡排序
bubble_sort(stu, 5);
// 输出排好序的学生信息
printf("排好序的学生信息如下:\n");
for (i = 0; i < 5; i++){
printf("姓名:%s, 学号:%d, 成绩:%.2f %.2f %.2f %.2f, 总分:%.2f, 平均分:%.2f\n",
stu[i].name, stu[i].id, stu[i].grade[0], stu[i].grade[1], stu[i].grade[2], stu[i].grade[3],
stu[i].total, stu[i].average);
}
return 0;
}
```
希望这个代码对您有所帮助!
阅读全文