【发布时间】:2021-12-10 08:36:36
【问题描述】:
我的作业要求我显示用户输入的开始时间 (hh:mm:ss) 和行进距离。出租车以 90 公里/小时的速度行驶。所以理想情况下,我希望程序显示时间(15 分钟间隔),从开始时间到结束时间,但格式为 mm:ss。
我的方法是将开始时间和结束时间转换为秒,并使用了 for 循环。我的时间间隔是 i+900(15 分钟以秒为单位)。但是,我的 for 循环一直在运行并且永远不会结束。谁能帮帮我?
我当前的代码
int hour, min, sec, minhour, newmin, timesec, endtime; //ignore irrelevant variables
float distance, remdis, remdisb, firstfare, secondfare, fare;
printf("Input your starting travelling time in 24hrs clock (hh mm ss): ");
scanf("%d %d %d", &hour, &min, &sec);
printf("Input your total travelling distance (km): ");
scanf("%f", &distance);
minhour = hour * 60;
newmin = min + minhour;
printf("Your starting time is %02d:%02d:%02d or %02d:%02d (mm:ss)\n", hour, min, sec, newmin, sec);
printf("Your total travelling distance is %.1fkm or %.0fm\n", distance, distance*1000);
timesec = hour*3600 + min*60 + sec;
endtime = timesec + ((distance/90)*3600);
printf("Starting time | Fare(%.1fkm)", distance);
for (int i=timesec; i<=endtime; i+900)
{
min = i/60;
sec = i - min;
printf("%d:%d | $XX.yy\n", min, sec);
}
【问题讨论】:
-
您提供的解决方案实际上无法正常工作,因为您不知道 for 循环将花费多少执行时间,因此请尝试
sleep(15*60);在结束条件为 'when current时间 >= 结束时间。请注意,您必须包含#include <unistd.h>才能使 sleep 工作。 -
嗯,不过我没有睡眠经验。您还有其他建议吗?
-
您的代码存在一些问题。在下面查看我的答案。