S1E12作业的四则运算计算器程序
这个是课后作业老师的源码,想求问大佬们,为什么不能计算小数呢?我看见强制转换了float类型呀,编译器没有报错,只是计算小数会显示0.00,是switch不能计算小数吗?{:10_266:}#include <stdio.h>
#include <stdbool.h>
int main()
{
int op1, op2;
char ch;
float result;
bool invalid = false;
printf("请输入式子:");
scanf("%d %c %d", &op1, &ch, &op2);
switch (ch)
{
case '-': op2 = -op2; // no break
case '+': result = (float)op1 + op2; break;
case '*': result = (float)op1 * op2; break;
case '/':
if (op2 != 0)
{
result = (float)op1 / op2;
break;
}
else
{
invalid = true;
break;
}
}
if (invalid)
{
printf("除数不能为零!\n");
}
else
{
printf("结果是:%.2f\n", result);
}
return 0;
} 你是如何操作的,截图看看
请输入式子:3/5
结果是:0.60
请输入式子:10/7
结果是:1.43
人造人 发表于 2020-2-23 14:52
你是如何操作的,截图看看
是不能进行小数的运算,比如10.5+5,或者10.5*5这样的QAQ,还是这个代码本来就不能运行这样的算式呢,是因为switch只能输入整数嘛?谢谢大佬解答=w= #include <stdio.h>
#include <stdbool.h>
int main()
{
//int op1, op2;
float op1, op2;
char ch;
float result;
bool invalid = false;
printf("请输入式子:");
//scanf("%d %c %d", &op1, &ch, &op2);
scanf("%f %c %f", &op1, &ch, &op2);
switch (ch)
{
case '-': op2 = -op2; // no break
case '+': result = (float)op1 + op2; break;
case '*': result = (float)op1 * op2; break;
case '/':
if (op2 != 0)
{
result = (float)op1 / op2;
break;
}
else
{
invalid = true;
break;
}
}
if (invalid)
{
printf("除数不能为零!\n");
}
else
{
printf("结果是:%.2f\n", result);
}
return 0;
}
人造人 发表于 2020-2-24 09:08
哇,懂了懂了,谢谢大佬=w={:10_297:}
页:
[1]