C/C++ : 12-24小时制转换

版权声明:@YDDUONG https://blog.csdn.net/y_dd6011/article/details/84311552

在英文的习惯中,中午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;
} 

猜你喜欢

转载自blog.csdn.net/y_dd6011/article/details/84311552