有人可以帮我处理我的代码吗? 我的程序没有终止。选择一个品牌后,它应该终止,但它会永远循环。
#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;
}
答案 0 :(得分:1)
我猜你误解了default
switch
的情况:只有当数字不是0,1,2,3
时才执行。{
如果您想在每次case 0 1 2 3
#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();