c程序时间从24小时转换为12小时

时间:2018-09-28 15:43:57

标签: c

我的代码有什么问题吗? 该程序可以将24小时制转换为12小时制,并且只需要输入四位整数即可。

例如输入= 0000,则输出应为上午00:00。

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

#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;
}

1 个答案:

答案 0 :(得分:0)

对于您的代码,如果小时= 0且最小值= x,则输出为00:xx am。 在12小时的时间中,没有凌晨00:xx。但是,有一个12:xx am。因此,如果小时= 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;
}