我需要编写一个程序,通过for
循环4次,并获取用户输入。它可以是+
,-
,*
或/
。否则会打印出invalid operator
。当我运行这个程序并输入+
时,它会输出f = 30
(我想要的)但是它会在它下面输出无效的操作符,而我甚至不会输入另一个字符。然后我输入-
并输出invalid operator
两次。有人可以解释为什么会这样吗?
#include <stdio.h>
#pragma warning(disable : 4996)
void main() {
char ch;
int f, a = 10, b = 20;
for (int i = 0; i < 4; i++) {
ch = getchar();
switch (ch) {
case '+': f = a + b; printf("f = %d\n", f);
break;
case '−': f = a - b; printf("f = %d\n", f);
break;
case '*': f = a * b; printf("f = %d\n", f);
break;
case '/': f = a / b; printf("f = %d\n", f);
break;
default: printf("invalid operator\n");
break;
}
}
}
答案 0 :(得分:3)
这里的问题是,当您输入操作员时,输入操作员和按 Enter 键,然后 Enter 键添加输入缓冲区中的换行符,您将读取但不能处理。
答案 1 :(得分:-1)
fflush(stdin);
当您收到来自ch=getchar()
的输入时,您输入一个字符并按Enter键,也会在输入缓冲区中添加换行符。
尝试使用fflush(stdin)
或while(getchar()!='\n');