如何为用户添加一个选项以再次运行操作?

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。