我目前正在使用这本书的“C编程现代方法第2版”自学C语言 . 请帮助解决这个问题,基本上这是关于“If-Else,Switch”章节的问题 . 第5章 - 如果其他,切换,编程项目Qn 8
下表显示了从一个城市到另一个城市的每日航班 .
Departure time Arrival time
8:00 a.m. 10:!6 a.m.
9.43 a.m. 11:52 a.m.
11:19 a.m. 1:31 p.m.
12:47 p.m. 3:00 p.m.
2:00 p.m. 4:08 p.m.
3:45 p.m. 5:55 p.m.
7:00 p.m. 9:20 p.m.
9:45 p.m. 11:58 p.m.
编写一个程序,要求用户输入时间(以小时和分钟表示,使用24小时制) . 然后程序显示出发时间最接近用户输入的航班的出发和到达时间:
**Enter a 24-hour time: 13:15
Closest departure time is 12:47 p.m., arriving at 3:00 p.m.**
提示:将输入转换为自午夜以来以分钟表示的时间,并将其与出发时间进行比较,也以午夜以分钟表示,例如,13:15为13 x 60 15 =自午夜起795分钟,这是更接近的到14:47 . (自午夜起767分钟),而不是其他任何出发时间 . *
我似乎无法获得这个问题的理想代码 . 我不知道如何“比较”使用If-Else或Switch的时间是“更接近”的时间 . 我也没有从函数或数组中得到任何其他类型的答案 . 请给我指导,因为我一直试图解决这个问题很长一段时间 .
请提供代码,以便我看看你是如何做到的 . 谢谢 .
只是要详细说明:基本上我如何比较哪个是更接近的出发时间 .
3 回答
在第一个出发时间之前或最后一个出发时间之后的一段时间内,即使是像你这样的初学者也应该很容易 . 另一方面,您需要计算出发时间之间的中间位置,并将输入的时间与输入时间进行比较,以找出最近的出发时间 .
例如,让我们取两个出发时间
11:19 a.m.
和12:47 p.m.
这些时间之间的中途是12:03 p.m.
如果输入的时间是在下午12:03之前(小于),那么最近的出发时间是上午11:19,如果输入的时间是之后(大于)下午12:03然后下午12:47的出发时间更近了 .我的建议是你制作一个包含出发和到达时间的结构,并根据指定的出发和到达时间制作一系列结构 . 然后创建另一个数组,其中包含有关中间时间的信息 . 就像是
利用上述系统和上述数据,8:51之前的时间最接近第一次出发,8:51到10:31之间的时间最接近第二次,结束等等 .
我不知道它是最好的方式,而且它肯定不是唯一的方式,它只是首先突然出现在我脑海中的方式 .
常见的编程shindig是比较两个数字之间的差异 .
那个's the (mathematical) absolute difference between two numbers. ie, it removes negative values. Slap a couple of those in a for-loop to compare it to all the values in the data structure and you'自己有一个
findClosestTime()
功能 .每个人都从头开始,祝你好运 .
我处理将小时数分成几分钟的问题的方法是: