【发布时间】:2014-04-21 07:39:30
【问题描述】:
当我运行这段代码时,这是我的输出:
$ make 6-4 && ./6-4
`6-4' is up to date.
Begin calculations
S 3
= 3.000000
+ 2
Invalid operator
= 3.000000
= 5.000000
开始很好,“S 3”给了我“= 3.000000”。比我输入“+ 2”,这给了我“无效的运算符”和两个答案。这就是我想要的:
S 3
= 3.000000
+ 2
= 5.000000
我错过了什么?
#include<stdio.h>
char operator;
float number = 0;
float result = 0;
main()
{
printf("Begin calculations\n");
while (1) {
scanf("%c%f", &operator, &number);
switch(operator)
{
case '+': {
result += number;
break;
}
case '-': {
result -= number;
break;
}
case '*': {
result *= number;
break;
}
case '/': {
result /= number;
break;
}
case 'S': {
result = number;
break;
}
case 'E': {
return 0;
break;
}
default: {
printf("Invalid operator\n");
break;
}
}
printf(" = %f\n", result);
}
}
谢谢。
【问题讨论】:
-
不要使用
scanf。 c-faq.com/stdio/scanfprobs.html