编程实现 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;
}