C 中开关中的退出情况



>我正在尝试使用退出大小写编写此代码,退出情况不起作用,它仍然要求我输入两个数字,然后退出。我已经提供了输出。我可用于菜单驱动程序的开关盒的替代方案是什么?

示例输入/输出:

::::::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;
}

相关内容

  • 没有找到相关文章

最新更新