我正在使用退出情况尝试此代码,退出情况不起作用它仍然要求我输入两个数字然后退出。我提供了输出。我可以用于菜单驱动程序的开关盒的替代品是什么?
示例输入/输出:
::::::Menu:::::
1. Addition:
2. Subtraction
3. Multiplication
4. Division
5. Mod
6. Exit
Enter your choice:6
Enter the values of a and b:3 4
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b,c;
int no;
do{
printf("\n::::::Menu:::::\n");
printf(" 1. Addition:\n 2. Subtraction \n 3. Multiplication \n 4. Division \n 5. Mod \n 6. Exit");
printf("\nEnter your choice:");
scanf("%d",&no);
printf("\nEnter the values of a and b:");
scanf("%d%d",&a,&b);
switch(no){
case 1:
c = a + b;
printf("\nAddition is:%d",c);
break;
case 2:
c = a - b;
printf("\nSubtraction is:%d",c);
break;
case 3:
c = a * b;
printf("\nMultiplication is:%d",c);
break;
case 4:
c = a / b;
printf("\nDivision is:%f",c);
break;
case 5:
c = a % b;
printf("\nMod is:%d",c);
break;
case 6:
exit(1);
default:
printf("\nInvalid choice\n");
break;
}
}while(no!=6);
return 0;
}
答案 0 :(得分:0)
您的程序要求输入两个数字,因为您在第二个scanf
语句后检查退出代码。如果您希望程序在输入6时退出,则必须在第一个和第二个scanf
之间添加if语句。您还应该从switch语句中删除退出案例。以下是一个例子:
printf("\nEnter your choice:");
scanf("%d",&no);
if (no == 6)
exit(0);
printf("\nEnter the values of a and b:");
scanf("%d%d",&a,&b);
答案 1 :(得分:0)
您正在阅读用户的菜单选项,然后在之前要求接下来的两个数字到switch
语句,所以当然它总会要求这两个数字。
您需要在阅读菜单输入后立即专门检查6,或者您需要将第二个提示仅移动到需要的位置,即在每个案例中。
答案 2 :(得分:0)
C
中的语句是按顺序执行的,除非您使用跳转中断正常的操作流程。在你的情况下
printf("\nEnter your choice:");
scanf("%d",&no);
printf("\nEnter the values of a and b:");
scanf("%d%d",&a,&b);
// Only now does the switch start.
首先要求选择,然后选择两个数字。这就是为什么你总是最终输入这两个值。一种方法是从switch-case
退出,这可能是我猜的最简单的解决方案。像
printf("\nEnter your choice:");
scanf("%d",&no);
if ( 6 == no )
exit(1);
我可以用于菜单的开关盒的替代品是什么 驱动程序
嗯,switch-case
正是为此做出的。为什么要考虑替代方案?
答案 3 :(得分:0)
它一直在询问这两个数字,因为在您要求输入用户输入后,switch语句就位于右侧。我重构了你的代码,这应该可行:
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b,c;
int no;
while(1){
printf("\n::::::Menu:::::\n");
printf(" 1. Addition:\n 2. Subtraction \n 3. Multiplication \n 4. Division \n 5. Mod \n 6. Exit");
printf("\nEnter your choice:");
scanf("%d",&no);
if (no == 6)
break;
printf("\nEnter the values of a and b:");
scanf("%d%d",&a,&b);
switch(no){
case 1:
c = a + b;
printf("\nAddition is:%d",c);
break;
case 2:
c = a - b;
printf("\nSubtraction is:%d",c);
break;
case 3:
c = a * b;
printf("\nMultiplication is:%d",c);
break;
case 4:
c = a / b;
printf("\nDivision is:%f",c);
break;
case 5:
c = a % b;
printf("\nMod is:%d",c);
break;
default:
printf("\nInvalid choice\n");
break;
}
}
return 0;
}
注意我是如何将do-while更改为while-true并明确检查no == 6 PRIOR请求用户输入。
答案 4 :(得分:0)
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
int main()
{
char ch;
while(1)
{
printf("l.print l c.print c q. exit \n");
printf("enter choice ");
scanf("%c",&ch);
switch(ch)
{
case 'l':
printf("You have typed l \n");
break;
case 'c':
printf("yoh have typed c \n");
break;
case 'q':
exit(0);
}
}
return 0;
}