>我正在尝试使用退出大小写编写此代码,退出情况不起作用,它仍然要求我输入两个数字,然后退出。我已经提供了输出。我可用于菜单驱动程序的开关盒的替代方案是什么?
示例输入/输出:
::::::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 choicen");
break;
}
}while(no!=6);
return 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);
您正在阅读用户的菜单选项,然后在进入switch
语句之前询问接下来的两个数字,因此它当然会始终询问这两个数字。
您需要在阅读菜单输入后立即专门检查 6,或者您需要将第二个提示移动到需要它们的地方,即在每个案例中。
它一直要求这两个数字,因为 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 choicen");
break;
}
}
return 0;
}
请注意我如何将 do-while 更改为 while-true,并在要求用户输入之前显式检查 no == 6。
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
正是为此而生的。为什么要考虑替代方案?
#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;
}