在C中终止程序

时间:2015-09-16 07:19:10

标签: c

有人可以帮我处理我的代码吗? 我的程序没有终止。选择一个品牌后,它应该终止,但它会永远循环。

#include<stdio.h>
int main (void)
{
    int number,count=0 ;

    while (count<3)
    {
        printf("Menu:\n");
        printf("1.Proace\n");
        printf("2.Yonex\n");
        printf("3.Reebook\n");
        printf("0.Exit\n");
        printf("Enter your selection:");
        scanf("%d",&number);

        switch (number)
        {
        case 0:
            printf("exit.\n");
            break;
        case 1:
            printf("You have selected proace.\n");
            break;
        case 2:
            printf("You have selected yonex.\n");
            break;
        case 3:
            printf("You have selected reebook.\n");
            break;

        default:
            printf("Please try again.\n");
            exit(0);
        }
    }
    return 0;
}

8 个答案:

答案 0 :(得分:1)

我猜你误解了default switch的情况:只有当数字不是0,1,2,3时才执行。{ 如果您想在每次case 0 1 2 3

的退出(0)时退出
#include<stdio.h>
int main (void)
{
    int number,count=0 ;

    while (count<3)
    {
        printf("Menu:\n");
        printf("1.Proace\n");
        printf("2.Yonex\n");
        printf("3.Reebook\n");
        printf("0.Exit\n");
        printf("Enter your selection:");
        scanf("%d",&number);

        switch (number)
        {
        case 0:
            printf("exit.\n");
            exit(0);
            break;
        case 1:
            printf("You have selected proace.\n");
            exit(0);
            break;
        case 2:
            printf("You have selected yonex.\n");
            exit(0);
            break;
        case 3:
            printf("You have selected reebook.\n");
            exit(0);
            break;

        default:
            printf("Please try again.\n");
        }
    }
    return 0;
}

BTW应该是一个更好的代码

#include<stdio.h>
int main (void)
{
    int number;
    bool canExit = false;

    while (canExit == false)
    {
       canExit  = true;

        printf("Menu:\n");
        printf("1.Proace\n");
        printf("2.Yonex\n");
        printf("3.Reebook\n");
        printf("0.Exit\n");
        printf("Enter your selection:");
        scanf("%d",&number);

        switch (number)
        {
        case 0:
            printf("exit.\n");
            break;
        case 1:
            printf("You have selected proace.\n");
            break;
        case 2:
            printf("You have selected yonex.\n");
            break;
        case 3:
            printf("You have selected reebook.\n");
            break;

        default:
            printf("Please try again.\n");
            canExit = false;
        }
    }
    return 0;
}

答案 1 :(得分:0)

while (count<3)替换为布尔值,bool loop=true;后跟while (loop)。然后在您希望退出时在开关内部,不要调用退出功能,只需设置loop=false;

答案 2 :(得分:0)

break中的switch()退出switch(),但未退出while()

如果您输入0,则不会执行default:个案。 这真的是你想要的吗?

答案 3 :(得分:0)

int number=4 ;

while (number > 3)

您可以删除我无法在任何地方使用的count

实际上,以下结构可能会更好,因为您不必在比较中输入任意数字:

int number;
do {
  // the thing
} while(number > 3);

在这种情况下,它确定是在第一次执行后而不是在它之前继续循环。因此,在条件可以破坏它之前,它总是会执行do ONCE,即使条件是假的,也可以开始!

答案 4 :(得分:0)

我会用以下代码替换你的开关:

char* brand[] = { "proace", "yonex", "reebook" };
do{
    if(number == 0)
        printf("exit.\n");
    else if(number <= 3)
        printf("You have selected %s.\n", brand[number]);
    else
        printf("Please try again");
}while(number > 3);

将其封装在具有条件编号&gt;的do-while循环中。 3,它将循环直到用户选择0-3。在这种情况下,exit(0)是不必要的。

答案 5 :(得分:0)

您没有更新计数变量,这就是它没有退出的原因。对于退出while循环,计数应大于或等于3.

答案 6 :(得分:0)

只要您提供输入0, 1, 2 or 3,您将永远不会到达default exit(),因此我们设置了while程序将继续运行条件为(count < 3),即0 < 3,它始终为真。所以没有机会以while条件退出该计划。终止该计划的唯一机会来自default

因此,如果您输入0, 1, 2 or 3以外的任何内容,则会转到default,这将调用exit(),从而导致程序终止。

答案 7 :(得分:-3)

您好,您可以通过在头文件部分中包含头文件#include来退出程序。

然后你可以使用exit()命令

例如: -

#inlcude<process.h>
#include<studio.h>
into opt;
printf(" enter o ");
scant(" %d",&opt);
switch(opt)
case 0: printf(" exiting the program");
             getch();
             exit();