我正在C中的XCode上做一个小型计算器程序(在macbook上)。我在这里给你代码:
#include<stdio.h>
int readOpnd(){
int opnd;
printf("\nInput Operand > ");
scanf("%d", &opnd);
fflush(stdin);
return opnd;
}
char readOp2(){
char op;
printf("\nInput Operator > ");
scanf("%c", &op);
if (op != '+' && op != '-' && op != '*' && op != '/'){
fflush(stdin);
return readOp2();
}
fflush(stdin);
return op;
}
char readOp(){
char op;
printf("\nInput Operator > ");
scanf("%c", &op);
while (op != '+' && op != '-' && op != '*' && op != '/'){
printf("\nIncorrect operator, try again >");
scanf("%c", &op);
fflush(stdin);
}
fflush(stdin);
return op;
}
int apply(char op, int opnd1, int opnd2 ){
if (op == '+')
return opnd1+opnd2;
if (op == '-')
return opnd1 - opnd2;
if (op == '*')
return opnd1*opnd2;
if (op == '/')
return opnd1/opnd2;
else{
printf("invalid use of apply function");
exit(1);
}
}
int main(){
char op;
int result, opnd1, opnd2;
while(1){
opnd1 = readOpnd();
opnd2 = readOpnd();
op = readOp();
result = apply(op, opnd1, opnd2);
printf("\nresult = %d", result);
while(1){
opnd2 = readOpnd();
op = readOp();
result = apply(op, result, opnd2);
printf("\nresult = %d", result);
}
}
exit(0);
}
然而,当我执行它时,我遇到了问题。我把第一个操作数然后是第二个操作数,然后我自动输出消息&#34;不正确的操作符,再试一次&#34;没有输入操作员。
例如:
输入操作数&gt; 6
输入操作数&gt; 4
输入运算符&gt;
操作员不正确,请再试一次&gt;
最奇怪的是,我在Windows计算机上没有这个问题,我没有&#34;不正确的运营商,尝试agin&#34;消息和代码完美地工作。我也尝试在我的mac控制台上运行它,但我遇到了同样的问题。
请问您有解决这个问题的方法吗?
提前致谢
答案 0 :(得分:1)
操作员角色的scanf
正在从最后一个输入读取'\n'
。
do {
scanf("%c", &op);
} while (op == '\n');
您无法以see here的方式刷新stdin
,{{3}}。