【问题标题】:how to display time every 15mins with a loop?如何循环显示每 15 分钟的时间?
【发布时间】:2021-12-10 08:36:36
【问题描述】:

我的作业要求我显示用户输入的开始时间 (hh:mm:ss) 和行进距离。出租车以 90 公里/小时的速度行驶。所以理想情况下,我希望程序显示时间(15 分钟间隔),从开始时间到结束时间,但格式为 mm:ss。

我的方法是将开始时间和结束时间转换为秒,并使用了 for 循环。我的时间间隔是 i+900(15 分钟以秒为单位)。但是,我的 for 循环一直在运行并且永远不会结束。谁能帮帮我?

enter image description here

我当前的代码

    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 &lt;unistd.h&gt; 才能使 sleep 工作。
  • 嗯,不过我没有睡眠经验。您还有其他建议吗?
  • 您的代码存在一些问题。在下面查看我的答案。

标签: c for-loop time


【解决方案1】:

但是,我的 for 循环一直在运行并且永远不会结束

     for (int i=timesec; i<=endtime; i+900)
                                     ~~~~~~

在这里使用i+=900,而不是i+900

【讨论】:

    【解决方案2】:

    试试这个:

        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);
    
        endtime = newmin + ((distance*60)/90);
    
        printf("Starting time | Fare(%.1fkm)\n", distance);
    
        for (int i=newmin; i<=endtime; i+=15)
        {
            hour = i/60;
            min = i % 60;
            printf("%02d:%02d   |  $XX.yy\n", hour, min);
        }
    

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      相关资源
      最近更新 更多