【问题标题】:Switch case menu doesn`t exit program when type case输入大小写时,切换案例菜单不退出程序
【发布时间】:2019-11-11 21:36:39
【问题描述】:

我编写了一个带有菜单的计算器。我正在尝试使用switch case。我的问题是,当程序询问值时,菜单不会以 case 0 立即退出。

#include<stdio.h>
int main(void) {
        float a = 0;
        float b = 0;
        int menu = 0;
        mainMenu();
        scanf_s(" %d", &menu);
        printf("Give a A:\n");
        scanf_s(" %f", &a);
        printf("Give a B:\n");
        scanf_s(" %f", &b);
        switch (menu) {
        case 0: {
            printf("Choice: 0\n");
            puts("Goodbye");
            break;
        }
        case 1: {
            printf("Choice: 1\n");
            printf(" %f", add(a, b));
            break;
        }
        case 2: {
            printf("Choice: 2\n");
            printf(" %f", sub(a, b));
            break;
        }
        case 3: {
            printf("Choice: 3\n");
            printf(" %f", mul(a, b));
            break;
        }
        case 4: {
            printf("Choice: 4\n");
            printf(" %f", div(a, b));
            break;
        }
        default: {
            printf("No action selected\n");
            break;
        }
        }
        return 0;
}

【问题讨论】:

  • @Rob 删除问题(即使是个好主意)超出了适当的编辑范围。相反,请发表评论以推荐它。
  • @Yunnosch It's a bit of a gray area 如果我离开它,我会投票关闭,其他人也可以。相反,他从我对编辑的评论中得到了通知,我不理会它。
  • 所以你的程序接受一个菜单选项和另外两个值,然后检查所有三个值是什么,你希望它检查菜单选项并在输入 0 和没有输入 0 时退出输入才要收集A和B吗?如果是这样,为什么不在收集菜单选项和收集其他两个值之间添加一个 if 语句。
  • @Rob 诚然是一个适用的链接。我将不得不消化它。它似乎确实专注于已经回答的问题(这个问题直到我们的 cmets 之后才出现)。我对此不满意,但我会为将来保留该链接和赞成的答案(即不会默默地喜欢它......)。感谢您的链接和回答。
  • 一种风格的评论是,除非您想在该范围内声明局部变量,否则您不需要在案例中使用大括号。没有额外的嵌套可能更容易阅读。

标签: c


【解决方案1】:
scanf_s(" %d", &menu);
if (menu == 0)
{
    printf("Choice: 0\n");
    puts("Goodbye");
    return 0;
}

您需要检查菜单的输入是否为零。如果菜单的输入为零,则从那里返回。您无需深入了解其余的输入。

根据@bruceg 的评论,从开关中删除case 0

【讨论】:

  • 如果你这样做,那么你应该去掉case 0: 代码,因为它是无法访问的。
  • 是的,case 0 的所有 printf 都可以从 switch 中删除,并且可以添加到这个 if 条件中。
  • 是否可以使用 if "exit" 作为 case 0?
  • 您将不需要它。因为您已经返回 0,这意味着您的代码不会执行到菜单 0 的开关。
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多