【发布时间】: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