m0_74596873 2022-12-17 21:19 采纳率: 100%
浏览 18
已结题

青奥会入场,要求按国家名字的字母序输出信息,东道主最后输出,哪里错了?为什么Japan排在Germany前面?

  1. #include<stdio.h>

  2. #include<string.h>

  3. struct country

  4. {

  5. int order;
    
  6. char name[20];
    
  7. int number;
    
  8. char continent[20];
    
  9. };

  10. int main()

  11. {

  12. struct country cou[100],temp;
    
  1. int n,i,j;
    
  1. while(scanf("%d",&n)!=EOF)
    
  2. {
    
  3.     for(i=0;i<n;i++)
    
  4. scanf("%d %s %d %s",&cou[i].order,cou[i].name,&cou[i].number,cou[i].continent);

  1.     for(i=0;i<n;i++)
    
  2.         if(strcmp(cou[i].name,"China")==0)
    
  3.         {
    
  4.             temp=cou[i];
    
  5.             cou[i]=cou[n-1];
    
  6.             cou[n-1]=temp;
    
  7.         }
    
  1.     for(i=0;i<n-2;i++)
    
  2.         for(j=0;j<n-2-i;j++)
    
  3.             if(strcmp(cou[i].name,cou[i+1].name)>0)
    
  4.             {
    
  5.                 temp=cou[i];
    
  6.                 cou[i]=cou[i+1];
    
  7.                 cou[i+1]=temp;
    
  8. }

  1.     for(i=0;i<n;i++)
    
  2.         printf("%d %s %d %s\n",cou[i].order,cou[i].name,cou[i].number,cou[i].continent);
    
  3. }
    
  1. return 0;
    
  2. }

img

img

  • 写回答

1条回答 默认 最新

  • a5156520 2022-12-18 11:12
    关注

    根据图片里提供的样例,应该是因为程序的排序方式错了,因为样例里应该是根据国家信息结构里的number成员变量从小到大排序国家信息,然后输出的,根据这一点,修改如下:

    #include<stdio.h>
    
    #include<string.h>
    
    struct country
    
    {
    
        int order;
        char name[20];
        int number;
        char continent[20];
    };
    
    int main()
    
    {
    
        struct country cou[100],temp;
        int n,i,j;
        while(scanf("%d",&n)!=EOF)
        {
            for(i=0;i<n;i++)
                scanf("%d %s %d %s",&cou[i].order,cou[i].name,&cou[i].number,cou[i].continent);
        
           for(i=0;i<n-1;i++){
                   for(j=i+1;j<n;j++){
                       if(cou[i].number>cou[j].number){
                           temp = cou[i];
                           cou[i]=cou[j];
                           cou[j]=temp;
                    }
                }
           } 
        
        
            for(i=0;i<n;i++)
                printf("%d %s %d %s\n",cou[i].order,cou[i].name,cou[i].number,cou[i].continent);
        }
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测