在c中,如何使1200/500=3

在c中,如何使1200/500=3,c,ceil,C,Ceil,在C中,如何使1200/500=3 我正在做家庭作业 航运计算器:快速航运公司将根据您的包裹重量和发送距离来运输您的包裹。他们只会运送不超过10磅的小包裹。你需要有一个程序来帮助你确定他们将收取多少费用。费用是以每500英里运输一次为基础的。它们不是按比例收费的,即600英里与900英里的收费相同 这是他们给你的桌子: 包装重量-----------------每500英里运费 2磅或以下------------------$1.50 超过2但不超过6----------3.70美元 超过6但不

在C中,如何使1200/500=3

我正在做家庭作业

航运计算器:快速航运公司将根据您的包裹重量和发送距离来运输您的包裹。他们只会运送不超过10磅的小包裹。你需要有一个程序来帮助你确定他们将收取多少费用。费用是以每500英里运输一次为基础的。它们不是按比例收费的,即600英里与900英里的收费相同

这是他们给你的桌子:

包装重量-----------------每500英里运费

2磅或以下------------------$1.50

超过2但不超过6----------3.70美元

超过6但不超过10-------$5.25

这里有一个测试用例

测试用例数据:

重量:5.6磅
英里:1200英里

预期成果:

您的运费是11.10美元



我的答案一直是7点40分,你是不是想凑热闹?在除法之前,可以将要除法的数字加上499

(0+499)/500->0

(1+499)/500->1

(1200+499)/500->3


这将结束。

假设您希望通过
b
获得天花板分区
a
(在您的示例中
a=1200
b=
500
)。 你可以用这样的整数算法来做

result = (a + b - 1) / b;
或者你可以使用浮点数,这样做(可能是个坏主意)

问题是,因为这是一个家庭作业,所以你可以分小步完成:

if( a % b == 0 ) {
    result = a / b;
} else {
    result = a / b + 1;
}

此代码的另一个优点是,它实际上不会溢出太大的
a
s,但我想这与本例无关。

[EDIT1]

根据您的代码,您将按如下方式实现此部分:

if ( weight <= 5.6 )
{
    int multiplier = (int) miles / 500;

    if( ((int)miles % 500) > 0)
        multiplier++;

    rate370 = (double)multiplier * 3.7;

    printf("Your total cost : %.2lf\n", rate370);      
}

我建议使用mod和truncate函数。如果mod为零,则可以,否则截断并添加1。

您必须使用除法的上限。这将把商四舍五入到下一个整数

因此,当您试图找到500英里增量的数量时,您必须将商向上舍入到下一个整数


或者,(并且效率低下),您可以将英里数增加
1
,直到它可以被
500
整除……也就是说,
而((q=x_英里+++%500)!=0){}
。然后按速率多比
q
得到您的答案(这也是假设您将拥有整数英里数)。

您也可以使用stdlib div函数。如果您只想要整数数学,并且特别想要避免浮点数学,那么这可能很好

#包括
int foo(无效)
{
div_t result=div(1200500);
返回result.quot+(0
1200/500
不等于
3
。也许你应该解释一下为什么你认为应该这样做。至少把你的问题标记为家庭作业。
ceil(1200/500)=3
,但是你能解释一下为什么会这样吗?@Makoto
ceil(1200/500)=2.0
它实际上应该是
ceil((双)1200/(双)500)
@C0deH4cker:这是一样的,你不必对打字感到困惑。@AustinGirau,你应该付出一些努力,你所付出的努力,可能会为此提出一个新的问题。很抱歉,如果我似乎没有表现出任何“努力”,我只是开始学习编程,所有这些概念对我来说似乎都很难理解。让我们不要对这家伙太苛刻,这就是我们在这里要做的是为其他需要帮助的人回答编码问题,这是一个编码问题+1如果您担心
a
太大而溢出,您可以执行
result=((a-1)/b)+1。@Daniel,但这不适用于
a==0
,是的,从技术上讲,它适用于更多的输入,但是
a==0
的情况通常更容易命中。
if ( weight <= 5.6 )
{
    int multiplier = (int) miles / 500;

    if( ((int)miles % 500) > 0)
        multiplier++;

    rate370 = (double)multiplier * 3.7;

    printf("Your total cost : %.2lf\n", rate370);      
}
int multFiveHundreds = (int)totalWeight / 500;
if(multFiveHundreds % 500 > 0)
    multFiveHundreds++;
#include <stdlib.h>

int foo(void)
{
  div_t result = div(1200, 500);
  return result.quot + (0 < result.rem); 
}