我需要编写一个程序,经过for
循环4次,并获得用户输入。它可以是+
,-
,*
或/
。否则,它将打印出invalid operator
。当我运行这个程序,并把它放在+
,它输出f = 30
(我想要的),但它后面输出无效的操作权,甚至没有我插入另一个字符。然后输入-
,输出invalid operator
两次。有人可以解释为什么会这样吗?当我使用getchar()时,switch语句不能正常工作?
#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;
}
}
}
首先你可能要检查什么['getchar'(http://en.cppreference.com/w/c/io/getchar)* *实际收益为类型。 *和*处理可能的错误。 –