c# 计算时输出不正确

zazmityj  于 2023-02-27  发布在  C#
关注(0)|答案(1)|浏览(234)

因此,我是一个初学者的编程世界,我目前正在学习编程在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。有人能帮忙吗?

qojgxg4l

qojgxg4l1#

你的代码有几个问题。
1.第一个条件应该颠倒,否则后面的条件就不会被采用:

if (projcost <= 10000)

1.第二个条件应该用逻辑AND代替逻辑OR,否则它将始终为真:

else if (projcost >= 10001 && projcost <= 100000)

1.在最后一个分支上:

else (projcost >= 100001);

您缺少一个if,并且分号的位置不正确。修复该问题:

else if (projcost >= 100001)

但是,由于它是最后一个分支,所以最好删除条件:

else

1.因为您使用的是浮点,所以您列出的条件实际上并没有覆盖所有可能的输入。例如,如果输入是10000.5,则您的逻辑将执行您没有预料到的操作(具体操作取决于您应用了上述哪种修复)。编写此逻辑的一种更简单的方法是:

if (projcost <= 10000)
     fees = ...;
 else if (projcost <= 100000)
     fees = ...;
 else
     fees = ...;

这与您的代码相反,是正确的--因为总是只执行一个分支。

相关问题