首页 > 解决方案 > 如何为用户添加选项以再次运行操作?

问题描述

我使用 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');

标签: ccalculator

解决方案


您可以使用

do {} 
while (((menuNo = getch()) == 'y' || menuNo == 'Y') &&
          (menuNo != ' ' || menuNo != '\t' || menuNo != '\0');

由于getch()返回int其余代码就可以了,因此您的代码将继续并删除scanf()

但是为了得到你必须正常工作的东西,你可以做

if (ch >= '0' && ch <= '9')
   menuNo  = ch - '0'`

这是因为您没有读取十进制值为char 048 的十进制值。

要完成答案并将您指向特定问题,您可以在scanf (" %c", &ch)@pmg 和他的评论中忽略空格和制表符。

尽管您必须初始化menuNobeforedo {} while ();循环,但存在一个大问题,否则它就是 UB。


推荐阅读