【问题标题】:Nested do while loop嵌套做while循环
【发布时间】:2016-01-27 18:14:58
【问题描述】:

所以我一直在尝试制作一个包含更多子菜单的菜单。主菜单是一个 do while 循环,因此如果用户尝试输入不相关的输入,它将让他重新输入。我想知道我是否可以对子菜单做同样的事情,但是即使我写了一个有效的输入,子菜单循环也会继续进行。代码如下:

do
{

    printf("Enter your choice: ");
        scanf(" %d", &choice1);
        switch (choice1)
        {



            case (1) :

             do {
                    printf("4 printfs of choices");


                    printf("Enter your choice: ");
                        scanf(" %d", &choice2);


                switch (choice2)
                        {

                case (1):
                        {
                        stuff
                        }
                    break;

               case (2) :
                       {
                        stuff
                       }
                    break;

              case (3) :
                       {
                        stuff
                       }
                    break;

              case (4) :
                       {
                         exit(0);
                       }

               default :
                       {
                         printf("Sorry that is not a valid choice!\n");
                       }
                       break;
                }
            } while ((choice2 > 0) || (choice2 < 5));
        break;

主循环还有另一个 while 结束,它不是 我的担心

【问题讨论】:

  • 亲爱的上帝修复你的格式。
  • @CollinD 对不起,我正在处理它
  • 希望我没有表现得很刻薄,所以这只是令人吃惊的哈哈!

标签: c do-loops


【解决方案1】:

(选择2 > 0) || (选项2

总是正确的,你可能是指&amp;&amp;。

【讨论】:

  • 如果我输入&&,它甚至不会重复菜单
  • @djechlin 这是倒退的。循环应该在该测试中中断,而不是继续。所以!((choice2 &gt; 0) &amp;&amp; (choice2 &lt; 5)) 会起作用。
【解决方案2】:

我想你想要while ((choice2 &lt; 1) || (choice2 &gt; 4));

【讨论】:

  • 是的,它成功了,谢谢。但是你能向我解释一下出了什么问题吗?
  • 哦,我刚刚想通了,我什至觉得不好意思发这个问题呵呵。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多