关于用C语言写一个根据平均成绩高低排列学生id的程序。
发布网友
发布时间:2023-10-17 18:26
我来回答
共2个回答
热心网友
时间:2024-12-01 10:32
#include<stdio.h>
#include<string.h>
typedef struct Student{
char id[256];
int score[3];
}st;
void my_sort(st a[],int n)
{
int i;
int j;
st t;
int res;
for(i=n-1;i>0;i--){
for(j=0;j<i;j++){
res = a[j].score[0]+a[j].score[1]+a[j].score[2];
res = res-a[j+1].score[0]-a[j+1].score[1]-a[j+1].score[2];
if(res<0){
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
else if(res==0){
res =strcmp(a[j].id,a[j+1].id);
if(res>0){
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
}
int main()
{
st a[64];
int n;
while(scanf("%d",&n)!=EOF){
getchar();
int i;
for(i=0;i<n;i++){
gets(a[i].id);
scanf("%d%d%d",&a[i].score[0],&a[i].score[1],&a[i].score[2]);getchar();
}
my_sort(a,n);
for(i=0;i<n;i++){
puts(a[i].id);
}
}
return 0;
}
热心网友
时间:2024-12-01 10:33
你的结构体定义有问题,不应该将成员全定义成数组!
应该改成成员是普通变量,定义一个结构体数组变量来使用!