gpt4 book ai didi

C算术、取模

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:59 25 4
gpt4 key购买 nike

所以我遇到了这个问题,我正在研究必须确定在卡丁车赛道上花费的时间成本;他们按小时收费,如果您在特定小时内花费 30 分钟或更长时间,您将被收取全额费用。注意:我不是在找人替我回答我的问题,就像我认为这里没有人会这样做一样。

我现在将发布我的源代码:

#include <math.h>


int main(){

float price;
int minutes;
int hours;
int total_cost;

printf("How much does this go-kart location charge per hour?\n");
scanf("%f", &price);

printf("How many minutes can you spend there?\n");
scanf("%d", &minutes);

hours= minutes/60;

total_cost=hours * price;

printf("Your total will be $%d" ,&total_cost);



return 0;
}

................................................ ...................................................

我的问题是.我不确定如何准确计算某人花费的时间,因此成本是错误的。如果某人在这个地方花费 1.5 小时,他们将按 2 小时付费。同样,如果某人只花费 30 分钟。他们按 1 小时计费。

我的一部分人认为我要使用模数运算符来对余数进行四舍五入,但我不确定该怎么做。一小时 60 分钟,我在这条赛道上花了 30 分钟,60 % 30 会是花费的时间。但这会返回 30 的余数,花费 30 分钟意味着我要支付 1 小时的全价。

同样,我不是在找人替我回答我的问题,这对我没有任何用处,只是一些关于如何计算必须始终从半小时及以后四舍五入的数字的一般帮助。

感谢任何提供帮助或路过的人。

更新;所以我在我的问题中添加了一个 if else 语句,它似乎有效。我将在下面发布更新后的源代码。

................................................ .....................................

这似乎是基于我已经完成的一些试运行,我必须将输出编辑为小数点后两位(%.2f,我认为,让它看起来更好,感谢你们所有人帮助,我是 C 语言编程的新手,这让我很困惑,但学习这个对我来说很重要,不仅仅是为了某个年级,所以感谢你的帮助。

最佳答案

如果可以使用浮点类型,最简单的做法就是四舍五入到最接近的整数:

int billable_hours(int minutes) {
return (int)round(minutes / 60.);
}

值得阅读舍入模式以验证这是否满足您的需要。

有一个技巧可以避免担心舍入模式,即添加偏差,这样只需向下舍入就可以满足您的需要:

int billable_hours(int minutes) {
return (int)floor(0.5 + minutes / 60.);
}

但是如果我们坚持使用整数(整数除法舍弃小数部分,有效地向零舍入),这也是一样的:

int billable_hours(int minutes) {
return (minutes + 30) / 60;
}

因为任何小数小时 >= 30 分钟,我们在丢弃小数部分之前强制到下一个整小时。


注意事项:

  • 这些在负输入时会有不同的表现。与此无关(希望),但值得一提
  • 注意类型提升:文字 60. 是 double ,而 60 是整数。当您编写 int/double 时,它会被提升为 double/double,因此您不必强制转换。不过,第三个函数中的除法仍然是整数除法。
  • the simplest thing 是指最简单的输入和/或阅读方式。在计算上,第三个是迄今为止最简单的。

关于C算术、取模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28351525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com