如何保持一会儿循环?

时间:2020-03-29 18:58:41

标签: c while-loop

我正在开发一个程序,该程序应该不断询问用户输入,有点像菜单,直到他们选择退出选项为止。根据他们的选择,将根据选择进行某种操作。现在,我只是在尝试测试菜单是否将继续显示给用户,但是一旦我运行该程序,它将自动退出。这就是我所拥有的:

#include <stdio.h>
#include <string.h>

int main()
{
  char str;
  unsigned int hex;
  int decimal;


  while(str != 'Q'){
    printf("Choose an Option (C, M, Q, S, V): ");
    scanf("%c", &str);

    if(str == 'C'){
      printf("C working.");
      break;
    }
    else if(str == 'M'){
      printf("M working.");
      break;

    }
    else if(str == 'S'){
      printf("S working.");
      break;

    }
    else if (str == 'V'){
      printf("V working.");
      break;

    }




  }
    return 0;
}

Q是可以立即退出程序的选项,但其他选项则不会。

我得到的示例输出:

Choose an Option (C, M, Q, S, V): M
M working. (base)

4 个答案:

答案 0 :(得分:2)

中断从while循环退出。 if语句不是循环结构,因此break用于最近的循环。

答案 1 :(得分:1)

如果您希望菜单继续显示给用户,则只需删除每个(if,else if)块中的break语句。因为 break continue 语句会影响最接近它们的重复语句,即代码中的 while循环

how break statement works

答案 2 :(得分:0)

您需要初始化100vh

str

答案 3 :(得分:0)

似乎您只想在break'Q'

int main()
{
  char str = null;
  unsigned int hex;
  int decimal;

  while(1 == 1) { /* infinite loop until user breaks with a help of Q */
    printf("Choose an Option (C, M, Q, S, V): ");
    scanf("%c", &str);

    if (str == 'Q') /* break on Q only */
      break; 

    /* All the other cases: perform the operation and ask again */
    if(str == 'C'){
      printf("C working.");
    }
    else if(str == 'M'){
      printf("M working.");
    }
    else if(str == 'S'){
      printf("S working.");
    }
    else if (str == 'V'){
      printf("V working.");
    }
  }

  return 0;
}