MaolinYe(叶茂林) 2022-01-27 20:33 采纳率: 61.9%
浏览 29
已结题

代码有bug,编译器不报错,但运行起来连输入都不让输入,就直接结束了,不知道代码哪里有问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#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);
}

  • 写回答

2条回答 默认 最新

  • 四海一叶秋 2022-01-27 20:55
    关注

    struct score a[100000],b[100000],c[100000],d[100000];
    数量太大了吧,降到100看看。

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月27日
  • 已采纳回答 1月27日
  • 创建了问题 1月27日

悬赏问题

  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元