gpt4 book ai didi

c - 如何在模拟 24 小时之前或之时停止执行的模拟程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:54 24 4
gpt4 key购买 nike

有一个 500 加仑的水箱,用于24小时内将鱼煎成Fish Fry。水箱漏水,每小时流失剩余水量的 10%。如何修复我的代码,使其在 24 小时后或油箱容量达到 100 加仑后停止执行。出于某种原因,我似乎无法全神贯注于 for 循环。

int main()
{
double add, gal = 500, vol, newVol, hour;

printf("Please enter additional water added per hour: ");
scanf("%f", &add);

for (int hour = 0; hour <= 24; hour++)
{
vol = gal * 0.90 + add;
}
printf("The volume is %f gallons after %d hours. \n", &vol, &hour);

}

最佳答案

您的程序中存在多个问题:

  • 你应该包括<stdio.h>
  • scanf() double 的转换规范类型是 %lf , 不是 %f .
  • 你应该测试 scanf() 的返回值避免无效输入的未定义行为。
  • 循环迭代 25 次而不是 24 次。
  • 表达式vol = gal * 0.90 + add;更新卷不正确:您应该更新 gal或者只使用 vol .此外,如果在每小时开始时加水,则应为 vol = (gal + add) * 0.90; , 但水箱容量不能超过 500 加仑。如果在每小时结束时加水,您应该先测试水是否达到 100 加仑,然后再加水。
  • 你没有测试100的极限加仑
  • printf格式和参数不正确:应该是 printf("The volume is %f gallons after %f hours. \n", vol, hour);或更好printf("The volume is %f gallons after %d hours. \n", vol, hour);hour应定义为 int .
  • main应该返回 0 .

这是更正后的版本:

#include <stdio.h>

int main() {
double add, gal = 500, vol;
int hour;

printf("Please enter additional water added per hour: ");
if (scanf("%lf", &add) != 1) {
printf("invalid input\n");
return 1;
}
for (vol = gal, hour = 1; hour <= 24; hour++) {
vol = vol * 0.90;
if (vol <= 100)
break;
/* water is added at the end of each hour */
vol += add;
/* the tank cannot hold more than 500 gallons */
if (vol > gal)
vol = gal;
}
printf("The volume is %f gallons after %d hours.\n", vol, hour);
return 0;
}

您可能想要计算体积下降到 100 加仑的确切时间,但这更复杂。

关于c - 如何在模拟 24 小时之前或之时停止执行的模拟程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55351388/

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