张小鱼yu 2022-12-16 22:57 采纳率: 100%
浏览 26
已结题

C语言最终排名,程序有一点点排的不对

img

img


#define _CRT_SECURE_NO_WARNINGS
#define N 10000
#include<stdio.h>
struct stu
{
    int num;
    int ID[N];
    int M[N];
};
int main()
{
    struct stu a;
    printf("请输入队伍伍数:");
    scanf("%d", &(a.num));
    printf("请依次输入ID和做题数:");
    for (int i = 0; i < (a.num); i++)
    {
        scanf("%d", &(a.ID[i]));
        scanf("%d", &(a.M[i]));
    
    }
    printf("%d个\n", a.num);
    int t;
    for (int b = 0; b < (a.num)-1; b++)
    {
        for (int c = 0; c < (a.num) - 1 - b; c++)
        {
            if (a.M[b] < a.M[b + 1])
            {
                t = a.M[b + 1];
                a.M[b + 1] = a.M[b];
                a.M[b]=t;
            }
        }
    }
    for (int j = 0; j < (a.num); j++)
    {
        printf("%d %d\n", a.ID[j], a.M[j]);
    }
    return 0;
    
}

很想知道结构体中的那两个数组,一个去冒泡排序了,然后输出之后就是队的ID和他们自己做的题数对应不上了,我希望他们俩是绑定在一起的,就是一个队,他做了几个题,做的题的个数去冒泡排序了,然后我希望最后输出的是冒泡排序后队ID也能和他们做的题的个数给对上。而且我还有一个问题,那个做的题的个数一旦输入超过个位数,就比如说十位数23,他就没法冒泡排序,他就自己主动不参与冒泡排序,就是每次十位数的位置都不对。希望解答,感谢

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2022-12-16 23:24
    关注
    • 冒泡有问题,应该对 内循环 进行冒泡

    img

    帮你改了一下:

    #define _CRT_SECURE_NO_WARNINGS
    #define N 10000
    #include<stdio.h>
    struct stu
    {
        int num;
        int ID[N];
        int M[N];
    };
    int main()
    {
        struct stu a;
        printf("请输入队伍伍数:");
        scanf("%d", &(a.num));
        printf("请依次输入ID和做题数:\n");
        for (int i = 0; i < (a.num); i++)
        {
            scanf("%d", &(a.ID[i]));
            scanf("%d", &(a.M[i]));
        
        }
        printf("%d个\n", a.num);
        int t;
        int m;
        for (int b = 0; b < (a.num)-1; b++)
        {
            for (int c = 0; c < (a.num) - 1 - b; c++)
            {
                if (a.M[c] < a.M[c + 1])
                {
                    t = a.M[c + 1];
                    a.M[c + 1] = a.M[c];
                    a.M[c]=t;
    
                    m = a.ID[c + 1];
                    a.ID[c + 1] = a.ID[c];
                    a.ID[c] = m;
                }
            }
        }
        for (int j = 0; j < (a.num); j++)
        {
            printf("%d %d\n", a.ID[j], a.M[j]);
        }
        return 0;
        
    }
    
    

    如有帮助,欢迎点赞+采纳哈!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用