当我运行这段代码时,这是我的输出:
$ make 6-4 && ./6-4
`6-4' is up to date.
Begin calculations
S 3
= 3.000000
+ 2
Invalid operator
= 3.000000
= 5.000000
它开始的很好,‘S3’给我‘= 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);
}
}
谢谢。
发布于 2014-04-21 07:42:15
在您的示例中,在第二次调用中,scanf将换行符读入&操作符。若要跳过空白字符,请尝试使用:
scanf(" %c%f", &operator, &number);
而不是。也就是说,在格式的开头放一个空格字符。在%c
和%f
之间放置一个空格可能是个好主意。
发布于 2014-04-21 07:43:30
当读取第二行输入时,scanf()
将读取%c
格式规范的\n
换行符。
发布于 2014-04-21 07:45:35
试着打印操作符和数字的值,这样我们就知道为什么这个值不是执行大小写'+‘了。
https://stackoverflow.com/questions/23193056
复制相似问题