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日

悬赏问题

  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 哪个tomcat中startup一直一闪而过 找不出问题
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成