5453121*31 2019-09-04 09:25 采纳率: 50%
浏览 968
已结题

为什么用do-while会跳出循环啊?

我先选择A进入子菜单,然后选择D返回上一界面,结果会先提示输入有误再返回
我调试了一下,发现是最下面,也就是这段代码最外循环的else里的语句,
哪里出错了啊

    case '3':

                    do{
                     system("cls");
                      _3menu( );
                      char er;
                      printf("\t\t\t选择:");
                      scanf(" %c",&er);
                      getchar();
                      if(er=='A')
                      {
                          do{
                            system("cls");
                              _3Amenu();
                               char rt;
                           scanf(" %c",&rt);
                            if(rt=='A')
                            {
                             man_set();            xunhuan_8=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                            else if(rt=='B')
                            {
                             man_modify();         xunhuan_8=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                            else if(rt=='C')
                            {
                             man_delete();             xunhuan_8=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            } 
                            else if(rt=='D')
                            {
                                                    xunhuan_8=false; fflush(stdin); xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                           else 
                           {
                            printf("输入有误!");    getch();    xunhuan_8=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                           }
                          }
                          while(xunhuan_8);
                      }
                      if(er=='B')
                      {
                          do{
                            system("cls");
                              _3Bmenu();
                               char ty;
                           scanf(" %c",&ty);
                            if(ty=='A')
                            {
                            system("cls"); room_set();             xunhuan_9=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                            else if(ty=='B')
                            {
                            system("cls"); room_modify();          xunhuan_9=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                            else if(ty=='C')
                            {
                            system("cls"); room_delete();              xunhuan_9=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            } 
                            else if(ty=='D')
                            {
                                                     xunhuan_9=false;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                           else 
                           {
                            printf("输入有误!");   getch();     xunhuan_9=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                           }
                          }
                          while(xunhuan_9);
                      }
                      if(er=='C')
                      {
                          do{
                             system("cls");
                              _3Cmenu();
                               char yu;
                           scanf(" %c",&yu);
                            if(yu=='A')
                            {
                            system("cls"); hotel_set();            xunhuan_10=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                            else if(yu=='B')
                            {
                            system("cls"); hotel_modify();         xunhuan_10=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                            else if(yu=='C')
                            {
                            system("cls"); hotel_delete();             xunhuan_10=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            } 
                            else if(yu=='D')
                            {
                                                     xunhuan_10=false;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                            }
                           else 
                           {
                            printf("输入有误!");   getch();     xunhuan_10=true;  xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                           }
                          }
                          while(xunhuan_10);
                      }
                       else if(er=='D')
                      {
                       system("cls"); xunhuan_7=false;   xunhuan_1=true; xunhuan_2=true; 
                       }
                 else
                 {
                   printf("输入有误!");     xunhuan_1=true; xunhuan_2=true; xunhuan_7=true;
                 }
                    }
                 while(xunhuan_7);
                     break;

  • 写回答

5条回答 默认 最新

  • threenewbee 2019-09-04 09:30
    关注

    调试下

    while(xunhuan_数字);
    这里的条件如果不满足,就会跳出循环

    调试的方法是首先在while的地方下断点(breakpoint)按 f5运行程序。

    如果不满足,再检查你的scanf的输入,这个注意,是区分大小写的。

    另外你的程序本身写得不够合理,你给出题目本身,并且采纳本回答(有鉴于上次回答你的问题,你并没有采纳),可以给你写一个简单规范的程序。

    评论

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符