c 程序时间转换 24 小时到 12 小时

标签 c

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

例如。输入 = 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;
}

最佳答案

使用您的代码,如果小时 = 0 且分钟 = x,则输出为 00:xx am。 12 小时制中没有 00:xx am。不过,还有上午 12:xx。因此,如果 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;
}

关于c 程序时间转换 24 小时到 12 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558734/

相关文章:

c - 家庭作业——使用信号量和互斥量进行排队

c - 在屏幕上显示进程的 n 元素

c - 如何从单独的 int 值创建字符串

c - 如何制作一个程序同时执行另一个C程序多次?

c - 在 C 中运行时存储字符串

c - 使用 calloc 的堆损坏

c - C中高效的缓存使用

C程序判断一个数是否为素数

一次更改多个文件名

C 程序输出不正确?