问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
#include<string.h>
void exchange(int *a,int *b)
{
int s;
s=*a;
*a=*b;
*b=s;
}
int main()
{
struct score
{
char id[10];
int cai,de,sum;
};
struct score a[100000],b[100000],c[100000],d[100000];
int n,low,h,i=0,j=0,k=0,l=0,cais,des,x,y;
char idnum[10];
scanf("%d %d %d",&n,&low,&h);
while(n--)
{
scanf("%s%d%d",idnum,&cais,&des);
if(cais>=h&&des>=h)
{
strcpy(a[i].id,idnum);
a[i].cai=cais;
a[i].de=des;
a[i].sum=cais+des;
i++;
}
else if(cais>=low&&des>=h)
{
strcpy(b[j].id,idnum);
b[j].cai=cais;
b[j].de=des;
b[j].sum=cais+des;
j++;
}
else if(cais>=low&&des>=low&&des>cais)
{
strcpy(c[k].id,idnum);
c[k].cai=cais;
c[k].de=des;
c[k].sum=cais+des;
k++;
}
else if(cais>=l&&des>=l)
{
strcpy(d[l].id,idnum);
d[l].cai=cais;
d[l].de=des;
d[l].sum=cais+des;
l++;
}
}
for(x=0;x<i-1;x++)
for(y=0;y<i-1;y++)
if(a[y].sum<a[y+1].sum)
{
strcpy(idnum,a[y].id);
strcpy(a[y].id,a[y+1].id);
strcpy(a[y+1].id,idnum);
exchange(&a[y].cai,&a[y+1].cai);
exchange(&a[y].de,&a[y+1].de);
exchange(&a[y].sum,&a[y+1].sum);
}
for(x=0;x<j-1;x++)
for(y=0;y<j-1;y++)
if(b[y].sum<b[y+1].sum)
{
strcpy(idnum,b[y].id);
strcpy(b[y].id,b[y+1].id);
strcpy(b[y+1].id,idnum);
exchange(&b[y].cai,&b[y+1].cai);
exchange(&b[y].de,&b[y+1].de);
exchange(&b[y].sum,&b[y+1].sum);
}
for(x=0;x<k-1;x++)
for(y=0;y<k-1;y++)
if(c[y].sum<c[y+1].sum)
{
strcpy(idnum,c[y].id);
strcpy(c[y].id,c[y+1].id);
strcpy(c[y+1].id,idnum);
exchange(&c[y].cai,&c[y+1].cai);
exchange(&c[y].de,&c[y+1].de);
exchange(&c[y].sum,&c[y+1].sum);
}
for(x=0;x<l-1;x++)
for(y=0;y<l-1;y++)
if(d[y].sum<d[y+1].sum)
{
strcpy(idnum,d[y].id);
strcpy(d[y].id,d[y+1].id);
strcpy(d[y+1].id,idnum);
exchange(&d[y].cai,&d[y+1].cai);
exchange(&d[y].de,&d[y+1].de);
exchange(&d[y].sum,&d[y+1].sum);
}
for(x=0;x<i;x++)
printf("%s%d%d",a[x].id,a[x].cai,a[x].de);
for(x=0;x<j;x++)
printf("%s%d%d",b[x].id,b[x].cai,b[x].de);
for(x=0;x<k;x++)
printf("%s%d%d",c[x].id,c[x].cai,c[x].de);
for(x=0;x<l;x++)
printf("%s%d%d",d[x].id,d[x].cai,d[x].de);
}