Jackson_xl 2022-01-08 10:13 采纳率: 50%
浏览 39

结构体,冒泡排序为什么这样输出结果是错的?(C语言)

要求 按照降序输出人名和对应的成绩

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
    char name[11];
    int  score;
} stu[50];
int main()
{
    int n,i,j,t;
    char c[11];
    scanf("%d",&n);
    for(i=0; i<=n-1; i++)
    {
        scanf("%s %d",stu[i].name,&stu[i].score);

    }
    for(i=0; i<=n-2; i++)
    {
        for(j=0; j<=n-2-i; j++)
        {
            if(stu[j+1].score>stu[j].score)
            {
                t=stu[j+1].score;
                stu[j].score=stu[j+1].score;
                stu[j+1].score=t;
                strcpy(c,stu[j].name);
                strcpy(stu[j].name,stu[j+1].name);
                strcpy(stu[j+1].name,c);
            }
        }
    }
    for(i=0; i<=n-1; i++)
    {
        if(i==n-1)
        {
            printf("%s %d",stu[i].name,stu[i].score);
        }
        else
        {
            printf("%s %d\n",stu[i].name,stu[i].score);
        }
    }
    return 0;
}
```c


  • 写回答

1条回答 默认 最新

  • fuill 2022-01-08 10:41
    关注

    img


    这里改为

    img

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct student
    {
        char name[11];
        int  score;
    } stu[50];
    int main()
    {
        int n,i,j,t;
        char c[11];
        scanf("%d",&n);
        for(i=0; i<=n-1; i++)
        {
            scanf("%s %d",stu[i].name,&stu[i].score);
     
        }
        for(i=0; i<=n-2; i++)
        {
            for(j=0; j<=n-2-i; j++)
            {
                if(stu[j+1].score>stu[j].score)
                {
                    t=stu[j+1].score;
                    stu[j+1].score=stu[j].score;
                    stu[j].score=t;
                    strcpy(c,stu[j].name);
                    strcpy(stu[j].name,stu[j+1].name);
                    strcpy(stu[j+1].name,c);
                }
            }
        }
        for(i=0; i<=n-1; i++)
        {
            if(i==n-1)
            {
                printf("%s %d",stu[i].name,stu[i].score);
            }
            else
            {
                printf("%s %d\n",stu[i].name,stu[i].score);
            }
        }
        return 0;
    }
     
     
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月8日