求时间24制转12制的怎么改

编程实现 24 小时制转 12 小时制的功能,例如用户输入 “13:24”(中间是英文冒号)代表 24 小时制的 13 时 24 分,转换成 24 小时制就是“01:24 PM”(数字中间是英文冒号,PM 前面有一个 空格)代表下午 1 时 24 分。
注意,在英文的习惯中,中午 12 点被认为是下午,所以 24 小 时制的“12:00”就是 12 小时制的“12:00 PM”;而 0 点被认为是第 二天的时间,所以是“00:00

下面是一个实现将 24 小时制时间转换为 12 小时制时间的 C 语言程序:

#include <stdio.h>

int main() {
    int hour, minute;
    char am_pm[3];

    // 读入 24 小时制时间
    printf("请输入 24 小时制时间(如 13:24):\n");
    scanf("%d:%d", &hour, &minute);

    // 转换为 12 小时制时间
    if (hour >= 12) {
        sprintf(am_pm, "PM");
        if (hour > 12) {
            hour -= 12;
        }
    } else {
        sprintf(am_pm, "AM");
        if (hour == 0) {
            hour = 12;
        }
    }

    // 输出 12 小时制时间
    printf("12 小时制时间为:%02d:%02d %s\n", hour, minute, am_pm);

    return 0;
}

这个程序中,我们首先定义了一个整型变量 hour 表示小时数,一个整型变量 minute 表示分钟数,以及一个字符型数组 am_pm 表示上午或下午。

然后,我们使用 scanf 函数读入用户输入的 24 小时制时间,并使用 if 语句将其转换为 12 小时制时间。如果小时数大于等于 12,就表示下午,这时将 am_pm 赋值为 "PM",并将小时数减去 12;否则表示上午,这时将 am_pm 赋值为 "AM",并特判小时数为 0 的情况。

最后,我们使用 printf 函数输出转换后的 12 小时制时间,其中 %02d 表示将小时数和分钟数输出为两位,不足的用前导零补齐。

该回答引用ChatGPT

代码首先从用户那里读取输入的时间,然后根据输入的小时数进行分支判断,从而得到对应的 12 小时制时间。需要注意的是,在 12 小时制中,0 点对应的是 12:00 AM,中午 12 点对应的是 12:00 PM,所以需要进行特殊处理。%02d 的格式化符号表示将数字按照两位宽度进行输出,不足两位的高位用 0 填充。


#include <stdio.h>

int main()
{
    int hour, minute;
    printf("Please enter the time in 24-hour format (e.g. 13:24): ");
    scanf("%d:%d", &hour, &minute);

    if (hour == 0) {
        printf("The time in 12-hour format is: 12:%02d AM\n", minute);
    } else if (hour < 12) {
        printf("The time in 12-hour format is: %d:%02d AM\n", hour, minute);
    } else if (hour == 12) {
        printf("The time in 12-hour format is: 12:%02d PM\n", minute);
    } else {
        printf("The time in 12-hour format is: %d:%02d PM\n", hour - 12, minute);
    }

    return 0;
}