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日

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大