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

青奥会入场,要求按国家名字的字母序输出信息,东道主最后输出,哪里错了?为什么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 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。