如何在C中执行循环菜单

问题描述 投票:0回答:2

我正在尝试使用一些基本功能执行循环菜单,除了循环菜单外,其他所有功能都可以正常工作我认为while循环有问题,但我无法弄清楚它是什么。


int main(void) {

char letter;
char status = 0;
printf ("--------------------------------------\n");
  printf("a – Calculate the area of a rectangle\n");
  printf("b – Calculate the area of a circle\n");
  printf("c – Display a multiplication table\n");
  printf("d – Add two numbers\n");
  printf("x - exit program\n");
printf ("--------------------------------------\n");

scanf("%c",&letter);



while (status == 0)
{

  if (letter == 'a' || letter == 'A')
  {
  } 
   if (letter == 'b'|| letter == 'B')
  {
  }  

   if(letter == 'c'|| letter == 'C')
  {
  }


   if (letter == 'd'|| letter == 'D')
  {
  }

  if(letter == 'x' || letter == 'X')
  {
    printf("shut down\n");
    break;
  }
status ++
} 
return 0;
}
c
2个回答
0
投票

您需要在回路主体内移动scanf(" %c",&letter);;否则,您将永远没有机会输入x ...

请注意%c之前的空格,即" %c"格式,它将捕获来自先前输入的输入缓冲区中的任何新行。


0
投票
  1. 也许您是说状态为int,而不是char

  2. 您还应该在循环开始时读取输入,否则您将只获取一个输入

  3. 第一次迭代后,您将提升状态,这样它将退出循环。这是您想要达到的目标吗?我想你的意思是:

if(letter == 'x' || letter == 'X')
{
    printf("shut down\n");
    status ++
    break;
}
© www.soinside.com 2019 - 2024. All rights reserved.