【发布时间】: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", &hour, &min);中不需要0s -
您必须检查
scanf的结果。如果不是2,则输入无效。
标签: c