m0_73080662 2023-01-10 18:30 采纳率: 83.3%
浏览 72
已结题

请检查下代码为何部分未运行

######这段代码两个for循环中间 的那一部分代码莫名其妙的除了定义shu变量全没执行,求助原因

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<stdio.h>
int main()
{  int arr[3];
  scanf("%d",&arr[0]);
  scanf("%d",&arr[1]);
   scanf("%d",&arr[2]);
   int i,j,temp ;
   for(i=0;i<3-1;i++)
   {
       for(j=0;j<3-1-i;j++)//<=
       {
           if(arr[j]>arr[j+1])
           {
               temp=arr[j+1];
               arr[j+1]=arr[j];
               arr[j]=temp;
           }
       }
   }
     
      char shu;
     scanf("%c",&shu);//从这里开始
      

  
        if(shu=='A') printf("%d",arr[0]);
       else if(shu=='B') printf("%d",arr[1]);
       else if(shu=='C') printf("%d",arr[2]);//到这里,没执行,导致我跟答案永远多一个该死的空格
    
   for(i=1;i<=3;i++)//i<=2
   {
      scanf("%c",&shu);
      /* if(shu='A') printf(" %d",arr[0]);
       else if(shu='B') printf(" %d",arr[1]);
       else if(shu='C') printf(" %d",arr[2]);*/
       if(shu=='A') printf("%d",arr[0]);
       else if(shu=='B') printf("%d",arr[1]);
       else if(shu=='C') printf("%d",arr[2]); 
       
      
   }
  
    
    return 0;
}
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

6条回答 默认 最新

  • 星拱北辰 Python领域优质创作者 2023-01-10 18:42
    关注

    我测试了一下,你出问题的原因是:注释区域读进来的字符是换行符\n。
    解决方法:
    在第一次scanf("%c",&shu);前加入getchar()读取掉这个多余的\n。
    我为你修改了一下代码,已经可以输出四次了,具体细节你再微调:

    #include<stdio.h>
    
    int main() {
        int arr[3];
        scanf("%d", &arr[0]);
        scanf("%d", &arr[1]);
        scanf("%d", &arr[2]);
        int i, j, temp;
        for (i = 0; i < 3 - 1; i++) {
            for (j = 0; j < 3 - 1 - i; j++){
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        char shu;
        getchar();
        scanf("%c", &shu);
        if (shu == 'A') {
            printf("%d\n", arr[0]);
        } else if (shu == 'B') {
            printf("%d\n", arr[1]);
        } else if (shu == 'C') {
            printf("%d\n", arr[2]);
        }
        for (i = 1; i <= 3; i++){
            scanf("%c", &shu);
            if (shu == 'A') {
                printf("%d\n", arr[0]);
            } else if (shu == 'B') {
                printf("%d\n", arr[1]);
            } else if (shu == 'C') {
                printf("%d\n", arr[2]);
            }
        }
        return 0;
    }
    

    如果我的回答对你有帮助,还望采纳!

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

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。