退出C中的案例

时间:2017-08-10 18:41:09

标签: c switch-statement exit

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

示例输入/输出:

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

5 个答案:

答案 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;
}