因此,我是一个初学者的编程世界,我目前正在学习编程在C和我似乎不能找出什么是错的,我的代码。
#include <stdio.h>
int
main ()
{
float fees;
float projcost;
float num;
printf ("Please enter the cost of your project\n");
scanf ("%f", &projcost);
if (projcost >= 10000)
{
num = 0.10 * projcost;
fees = num;
}
else if (projcost >= 10001 || projcost <= 100000)
{
num = 1000 + ((projcost - 10000) * 0.05);
fees = num;
}
else (projcost >= 100001);
{
num = 6000 + ((projcost - 100000) * 0.03);
fees = num;
}
printf ("\nYour fees have totaled to %.2f", fees);
return 0;
}
如果我使用一个低于100,000的数字,我会得到一个与我自己计算的完全不同的答案。我相信我的计算是正确的,所以我不明白是什么问题。我一直试图输入7000,但当答案应该是700时,它输出3210。有人能帮忙吗?
1条答案
按热度按时间qojgxg4l1#
你的代码有几个问题。
1.第一个条件应该颠倒,否则后面的条件就不会被采用:
1.第二个条件应该用逻辑AND代替逻辑OR,否则它将始终为真:
1.在最后一个分支上:
您缺少一个
if
,并且分号的位置不正确。修复该问题:但是,由于它是最后一个分支,所以最好删除条件:
1.因为您使用的是浮点,所以您列出的条件实际上并没有覆盖所有可能的输入。例如,如果输入是
10000.5
,则您的逻辑将执行您没有预料到的操作(具体操作取决于您应用了上述哪种修复)。编写此逻辑的一种更简单的方法是:这与您的代码相反,是正确的--因为总是只执行一个分支。