首页 文章

C编程现代方法第2版的建议

提问于
浏览
-1

我目前正在使用这本书的“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 回答

  • 0

    在第一个出发时间之前或最后一个出发时间之后的一段时间内,即使是像你这样的初学者也应该很容易 . 另一方面,您需要计算出发时间之间的中间位置,并将输入的时间与输入时间进行比较,以找出最近的出发时间 .

    例如,让我们取两个出发时间 11:19 a.m.12:47 p.m. 这些时间之间的中途是 12:03 p.m. 如果输入的时间是在下午12:03之前(小于),那么最近的出发时间是上午11:19,如果输入的时间是之后(大于)下午12:03然后下午12:47的出发时间更近了 .

    我的建议是你制作一个包含出发和到达时间的结构,并根据指定的出发和到达时间制作一系列结构 . 然后创建另一个数组,其中包含有关中间时间的信息 . 就像是

    struct times
    {
        char *departure;
        char *arrival;
    } times[] = {
        { "8:00", "10:16" },
        { "9:43", "11:52" },
        .
        .
        .
    };
    
    char *inbetween_times[] = {
         "8:51",  // Time between the first and second departure
        "10:31",  // Time between the second and third departure
        .
        .
        .
    };
    

    利用上述系统和上述数据,8:51之前的时间最接近第一次出发,8:51到10:31之间的时间最接近第二次,结束等等 .

    我不知道它是最好的方式,而且它肯定不是唯一的方式,它只是首先突然出现在我脑海中的方式 .

  • 0

    常见的编程shindig是比较两个数字之间的差异 .

    #include <math.h>
    if(abs(value1 - value2) < somethingYouCompareItTo)
    

    那个'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() 功能 .

    每个人都从头开始,祝你好运 .

  • 0

    我处理将小时数分成几分钟的问题的方法是:

    #include <stdio.h>int main() {
        int in, out, t;
        scanf("%d %d", &in, &out);
        printf("Entry\n%02d:%02d\nLeave\n%02d:%02d\n", in/100, in%100, out/100, out%100);
    
        if (out-in>=0)t = ((out/100-in/100)*60+(out%100-in%100));
        else t = ((in/100-out/100)*60+(in%100-out%100));
        printf("Duration(min)\n%d\n", t); return 0;
    }
    

相关问题