【问题标题】:c program time conversion 24-h to 12-hc 程序时间转换 24 小时到 12 小时
【发布时间】:2018-09-28 15:43:56
【问题描述】:

我的代码有什么问题吗? 这是一个将24小时制时间格式转换为12小时制时间格式的程序,并且只需要一个四位整数作为输入。

例如。 input = 0000 那么输出应该是 00:00 a.m.

当我将代码提交给学校在线法官时,它不接受所有输入,但我无法找出问题。

#include <stdio.h>

int main(void)
{
    int morning, hour, min;

    scanf("%02d%02d", &hour, &min);

    if (hour > 23 || min > 59)
    {
        return 1;
    }


    //check am pm
    if (hour >= 12)
    {
        morning = 1;

        if (hour > 12)
        {
            hour -= 12;
        }

    }
    else
    {
        morning = 0;
    }

    //print the result
    if (morning == 0)
    {
        printf("%02d:%02d a.m.", hour, min);
    }
    else
    {
        printf("%02d:%02d p.m.", hour, min);
    }

    return 0;
}

【问题讨论】:

  • 00:00 am 是有效时间吗?我想应该是12:00 am
  • 12:00am 是 0000 的时间,而不是 00:00am。
  • 您可以查看Convert 12-hour date/time to 24-hour? 以获得一些想法和信息。它涵盖了逆变换,但许多问题是相同的。请记住,上午 11:59 比上午 12:01 晚了将近 12 个小时。
  • 次要:scanf("%02d%02d", &amp;hour, &amp;min);中不需要0s
  • 您必须检查scanf 的结果。如果不是2,则输入无效。

标签: c


【解决方案1】:

使用您的代码,如果小时 = 0 和分钟 = x,则输出为 00:xx am。 有 12 小时的时间,没有 00:xx am。然而,有一个 12:xx am。因此,如果 hour = 0,则需要包含另一个 if 语句。

#include <stdio.h>

int main(void)
{
    int morning, hour, min;

    scanf("%02d%02d", &hour, &min);

    if (hour > 23 || min > 59)
    {
        return 1;
    }


    //check am pm
    if (hour >= 12)
    {
        morning = 1;

        if (hour > 12)
        {
            hour -= 12;
        }

    }
    //if input is 00xx
    if (hour == 0)
    {
    morning = 2;
    hour = hour + 12;
    }
    else
    {
        morning = 0;
    }

    //print the result
    if (morning == 2); 
    {
    printf("%02d:%02d a.m.\n", hour, min);
    }   
    if (morning == 0)
    {
        printf("%02d:%02d a.m.\n", hour, min);
    }
    if (morning == 1)
    {
        printf("%02d:%02d p.m.\n", hour, min);
    }

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 2018-08-02
    • 2013-10-14
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多