在c中,如何使1200/500=3
在C中,如何使1200/500=3 我正在做家庭作业 航运计算器:快速航运公司将根据您的包裹重量和发送距离来运输您的包裹。他们只会运送不超过10磅的小包裹。你需要有一个程序来帮助你确定他们将收取多少费用。费用是以每500英里运输一次为基础的。它们不是按比例收费的,即600英里与900英里的收费相同 这是他们给你的桌子:在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但不
包装重量-----------------每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
,但是你能解释一下为什么会这样吗?@Makotoceil(1200/500)=2.0
它实际上应该是ceil((双)1200/(双)500)
@C0deH4cker:这是一样的,你不必对打字感到困惑。@AustinGirau,你应该付出一些努力,你所付出的努力,可能会为此提出一个新的问题。很抱歉,如果我似乎没有表现出任何“努力”,我只是开始学习编程,所有这些概念对我来说似乎都很难理解。让我们不要对这家伙太苛刻,这就是我们在这里要做的是为其他需要帮助的人回答编码问题,这是一个编码问题+1如果您担心a
太大而溢出,您可以执行result=((a-1)/b)+1改为code>。@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);
}