在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。
/*
Name: 12-24小时制转换
Author: YDDUONG
Description: (英文习惯)
上午:0:0 am~11:59am
下午:12:0 pm~11:59pm
*/
#include<stdio.h>
int main(){
int n,m;//n:m
char a[3]="AM";
char p[3]="PM";
scanf("%d:%d",&n,&m);
if(n>=0&&n<=11)printf("%d:%d %s",n,m,a);
if(n==12)printf("12:%d %s",m,p);
if(n>=13&&n<=23)printf("%d:%d %s",n-12,m,p);
return 0;
}
代码很简单,主要注意十二小时制,搜狗百科对其的描述为:(链接)
十二小时制是一个时间规则把一日二十四时分为两个时段,分别为上午(a.m.,拉丁文ante meridiem表示中午之前)和 下午(p.m.,拉丁文post meridiem表示中午之后)。每个时段由十二个小时构成,以数字12、1、2、3、4、5、6、7、8、9、10、11依次序表示。上午时段由午夜至中午,而下午时段由中午至午夜。
所以是没有0:xx(十二小时制)的时间表示形式。
可将代码做以下修改:
#include<stdio.h>
int main(){
int n,m;//n:m
char a[3]="AM";
char p[3]="PM";
scanf("%d:%d",&n,&m);
if(n==0)printf("12:%d %s",m,a);
if(n>=1&&n<=11)printf("%d:%d %s",n,m,a);
if(n==12)printf("12:%d %s",m,p);
if(n>=13&&n<=23)printf("%d:%d %s",n-12,m,p);
return 0;
}