作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让用户选择一个选项。所以我声明了一个名为 Choice 的变量,我希望它输入一个只能是 'M'
的 char
、'C'
、'O'
或 'P'
。
这是我的代码:
char Choice;
printf("Select something to do :\n'M':Model Parametering\n'C':Calendar creation\n'O':Calendar Output\n'P':Calendar Print\nChoice==>>");
Choice = getchar();
while(Choice!='M' && Choice != 'C' && Choice != 'O' && Choice != 'P'){
printf("\nIncorrect choice, Try again\n");
printf("Select something to do :\n'P':Model Parametering\n'C':Calendar creation\n'O':Calendar Output\n'P':Calendar Print\nChoice==>>");
Choice = getchar();}
问题是当我用错误的值测试它时(输入不在 ['M','C','O','P']
中的字符),while 循环不止一次地工作。例如,如果我输入 "TEST"
而不是 'M'
、'C'
、'O'
或'P'
while 可以工作 5 次,而不是像我想要的那样只工作一次!为什么会发生这种情况?
最佳答案
输入TEST
(4个字符)后,您还按了Enter。这是传递给程序的第五个字符(实际上是换行符)。同样,在执行单个字符(和 Enter)后,循环运行两次 - 首先针对字符本身,然后针对换行符。
关于C 语言 - WHILE 循环的工作量超出了预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896766/
我是一名优秀的程序员,十分优秀!