问什么会显示答案错误(成绩改成浮点型也不对)

img


#include
#include
struct STUDENT
{
    char a[100];
    int b;
    int c;
};
int main()
{
    int n,i,j,t;
     struct STUDENT S[1000];
     struct STUDENT axi;
    memset(S,0,1000);
    scanf("%d",&n);
    for(i=0;i"%s %d %d",&S[i].a,&S[i].b,&S[i].c);
    for(i=0;i0;j-1-i;j++)
    {
        if(S[j].c>S[j+1].c||(S[j].c==S[j+1].c&&S[j].a[0]>S[j+1].a[0])||(S[j].c==S[j+1].c&&S[j].a[0]==S[j+1].a[0]&&S[j].b>S[j+1].b))
        {
            axi=S[j];
            S[j]=S[j+1];
            S[j+1]=axi;
        }
    }
    for(i=0;i"%s %d %d\n",S[i].a,S[i].b,S[i].c);
    return 0;
}

img

字符串比较用strcmp

你的条件写得眼花缭乱的,分开来写
伪代码:
int needswp = 0;
if (成绩1>成绩2)needswp =1
if (成绩1==成绩2 && 姓名1>姓名2) needswp =1
if(needswp) 交换

这if语句里面逻辑有点乱,自己慢慢根据题目需求,先进行成绩的高低顺序排序,然后在成绩相同的情况进行名字字符排序,只有成绩和姓名都相同再进行年龄排序。