帮我看看错哪啦
本帖最后由 皇天在上 于 2018-7-26 16:03 编辑写一个最简单的计算器,支持四则运算。
#include <stdio.h>
#include <math.h>
int main()
{
double a, b , answer;
char c;
printf("请输入式子:");
scanf("%d%c%d", &a, &c, &b);
if('c' == '+')
{
answer = a +b;
printf("%.2f + %.2f = %.2f", a, b, answer);
}
else if (c == '-')
{
answer = a- b;
printf("%.2f - %.2f = %.2f", a, b, answer);
}
else if ('c' == '*')
{
answer = a * b;
printf("%.2f * %.2f = %.2f", a, b, answer);
}
else if ('c' == '/')
{
if (b = 0)
{
printf("很遗憾,除数不能为零!");
}
else
{
answer = a / b;
printf("%.2f / %.2f = %.2f", a, b, answer);
}
}
else
{
printf("请输入正确的式子");
}
return 0;
} 同学,
if条件判断不对,字符比较应该用c=='+'; c=='-'; c=='*'; c=='/'
还有输入的格式不对,应该用scanf("%lf %c %lf", &num1, &c, &num2);中间加个空格比较好点
改进下你的代码,可以参考下:
#include<stdio.h>
#include<math.h>
int main(int argc, char **argv)
{
double num1, num2, result;
char c;
printf("input (eg:10-3):");
scanf("%lf %c %lf", &num1, &c, &num2);
if (c=='+')
{
result = num1+num2;
printf("%.2f + %.2f = %.2f\n", num1, num2, result);
}
else if (c=='-')
{
result = num1-num2;
printf("%.2f - %.2f = %.2f\n", num1, num2, result);
}
else if (c=='*')
{
result = num1*num2;
printf("%.2f * %.2f = %.2f\n", num1, num2, result);
}
else if (c=='/')
{
result = num1/num2;
printf("%.2f / %.2f = %.2f\n", num1, num2, result);
}
else
{
printf("input format is worng!\n");
}
return 0;
}
测试如:
baiyang@UbYang:~/ubshare/testcode$ gcc calu.c -o exe
baiyang@UbYang:~/ubshare/testcode$ ./exe
input (eg:10-3):10 - 3
10.00 - 3.00 = 7.00
baiyang@UbYang:~/ubshare/testcode$ ./exe
input (eg:10-3):10 + 3
10.00 + 3.00 = 13.00
baiyang@UbYang:~/ubshare/testcode$ ./exe
input (eg:10-3):10 * 3
10.00 * 3.00 = 30.00
baiyang@UbYang:~/ubshare/testcode$ ./exe
input (eg:10-3):10 / 3
10.00 / 3.00 = 3.33
ab都是double,在scnaf中用%lf接收输入 BngThea 发表于 2018-7-26 16:22
ab都是double,在scnaf中用%lf接收输入
不管怎样,都是打印出:不是正确的式子。 皇天在上 发表于 2018-7-26 16:33
不管怎样,都是打印出:不是正确的式子。
你可以测试一下,scanf以后abc的值是什么 看看看看下 皇天在上 发表于 2018-7-26 16:33
不管怎样,都是打印出:不是正确的式子。
{:5_90:}{:5_102:}{:5_103:}{:5_104:} double,所以全部改用 %lf
scanf(%lf %c %lf, &a, &c, &b); 之间最好有空格,因为有些人会输入数字之后空格。
if (c == '+') 不是 if ('c' == '+')
* 与 / 的情形一样
/ 内部, if (b == 0) 貌似scanf无法智能识别啊,建议用%s输入然后再分析(遍历找运算符然后strtok,再atof即可) ...........结果我发现,scanf中的应该是lf不是if。最大的问题在这啊= = 还有下面的除法中,应该是b == 0 这打赏能不能喂给自己呀= =
weizhongyang 发表于 2018-7-26 16:02
同学,
if条件判断不对,字符比较应该用c=='+'; c=='-'; c=='*'; c=='/'
还有输入的格式不对,应该用scan ...
为什么if判断里不用空格隔开呢?
页:
[1]