【发布时间】:2017-10-08 21:32:18
【问题描述】:
问题:用户以 24 小时格式输入时间。该阵列还以 24 小时格式列出了不同的时间。我想将用户输入的数字与最接近用户输入的时间的时间进行比较。任何最接近用户输入时间的数字都将显示在屏幕上。我一直在我的公司工作中通宵工作,并试图了解这背后的编程。谁能帮我?顺便说一句,我刚开始这个 C 编程课程。如果你看到任何看起来像 C# 代码的东西,那是因为我还没有学到足够的东西。到目前为止,这是我所拥有的:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int hours, mins; //24 hour time to be entered by user
int bestTime = scanf("%d:,%d", &hours, &mins); //best time for user departure
char* depart [8] = {"8:00", "9:43", "11:19", "12:47", "14:00", "15:45", "19:00", "\0"}; //times available for departure
int counter; //count number of times to loop
printf("Please Enter The Best Time For Your Flight In 24 Hour Format.\n");
scanf("%d:,%d", &hours, &mins);
for(counter = 0; counter < ; counter++){
if(bestTime < depart[counter]){
bestTime = depart[counter];
}
}
return bestTime;
}
【问题讨论】:
-
scanf("%d:,%d",...闻起来很腥... -
int bestTime = scanf....查看scanf()的返回值是什么... -
为了比较,我会将时间转换为总秒数(小时乘以 3600,分钟乘以 60 相加)。然后你在 2 个整数值之间进行比较,并且可以很容易地计算它们之间的差异,从而找到最近的一个
-
@AjayBrahmakshatriya 确实如此,但使用整数比 HH:MM 更容易,例如,用户输入 13:00,可能有 12:58 和 13:03 的时间,或者用户输入 15:00 和时间是 09:12 和 21:11.. 进行更复杂的搜索,整数版本是一个简单的减法,包含在
abs -
for(counter = 0; counter < ; counter++){在<之后显然缺少一些字符。