如何为用户添加一个选项以再次运行操作?
How to add an option for the user to run the operation again?
我使用 switch case 制作了一个简单的计算器,我想在最后添加一个选项让用户输入 Y/N 以输入新值并再次使用该程序。我尝试使用 do-while,但程序在最后检查条件之前退出。
do
{
switch(menueNo)
{
case 0:
break;
case 1:
result= x+y;
printf("the result is: %d \n",result);
break;
case 2:
result= x-y;
printf("the result is: %d \n",result);
break;
case 3:
result= x*y;
printf("the result is: %d \n",result);
break;
case 4:
if (y==0)
printf("invalid denominatior");
else
result= x/y;
printf("%d",result);
break;
default:
printf("invalid operation please try again.");
}
printf("Do you want to repeat the operation? Y/N: ");
scanf("%c",&ch);
} while(ch=='Y' || ch=='y');
您可以使用
do {}
while (((menuNo = getch()) == 'y' || menuNo == 'Y') &&
(menuNo != ' ' || menuNo != '\t' || menuNo != '[=10=]');
因为 getch()
returns 一个 int
其余的代码就可以了,你的代码将继续并删除 scanf()
;
但是要让你必须的东西正常工作,你可以做
if (ch >= '0' && ch <= '9')
menuNo = ch - '0'`
这是因为您没有读取 char
0
的十进制值,即 48 的十进制值。
要完成答案并指出具体问题,您可以忽略 space 和 scanf (" %c", &ch)
中的标签,由 @pmg 和他的评论提供。
有一个大问题,虽然你必须在 do {} while ();
循环之前初始化你的 menuNo
否则它是 UB。
我使用 switch case 制作了一个简单的计算器,我想在最后添加一个选项让用户输入 Y/N 以输入新值并再次使用该程序。我尝试使用 do-while,但程序在最后检查条件之前退出。
do
{
switch(menueNo)
{
case 0:
break;
case 1:
result= x+y;
printf("the result is: %d \n",result);
break;
case 2:
result= x-y;
printf("the result is: %d \n",result);
break;
case 3:
result= x*y;
printf("the result is: %d \n",result);
break;
case 4:
if (y==0)
printf("invalid denominatior");
else
result= x/y;
printf("%d",result);
break;
default:
printf("invalid operation please try again.");
}
printf("Do you want to repeat the operation? Y/N: ");
scanf("%c",&ch);
} while(ch=='Y' || ch=='y');
您可以使用
do {}
while (((menuNo = getch()) == 'y' || menuNo == 'Y') &&
(menuNo != ' ' || menuNo != '\t' || menuNo != '[=10=]');
因为 getch()
returns 一个 int
其余的代码就可以了,你的代码将继续并删除 scanf()
;
但是要让你必须的东西正常工作,你可以做
if (ch >= '0' && ch <= '9')
menuNo = ch - '0'`
这是因为您没有读取 char
0
的十进制值,即 48 的十进制值。
要完成答案并指出具体问题,您可以忽略 space 和 scanf (" %c", &ch)
中的标签,由 @pmg 和他的评论提供。
有一个大问题,虽然你必须在 do {} while ();
循环之前初始化你的 menuNo
否则它是 UB。