大家都知道,我们日常生活中的时间分为上午AM和下午PM,时间呢也是有24小时制的和12小时制的,24小时制的呢,就是会存在24点这个说法,而12小时制呢,就是正如我说的上午AM和下午PM分开来算。
这道题目的要求呢,就是要求用户输入24小时制的时间,然后显示12小时制的时间。
题目的具体要求
1、输入一行中间带有冒号的24小时制的时间,比方说12:34就表示12时34分。当小时数或者分钟数小于10的时候,没有前导的0,比方说5:6表示5时6分。
提示:这里可以用到scanf函数,用scanf函数来处理这个冒号。
2、输出对应的12小时制的时间,格式呢与输入的时间格式相同,然后跟上空格,加上对应时间是上午还是下午,比方说上午就对应为AM,下午就对应为PM。
梳理逻辑
在正式开始这道题目之前呢,我一直以来的想法就是要先理清楚逻辑。
1、要求输入24小时制的时间,用到的函数就是scanf。
2、这个上午下午是如何对应的呢,一般是以24小时制的12为中心点,小于12点,那就是直接用数字表现出来,比方说8点、9点,而大于12点,那就是用15点、16点等来表示。
注意:这里的中午12点,我们应该要用到一个PM来表示的,就是作为下午的时间节点。
而0点被认为是第二天的时间节点,所以应该要用到一个AM来表示的,就是作为上午的时间节点。
代码实现
因为中午12点与0点这两个时间节点较为特殊,所以我们需要进行分开讨论,而针对分钟数呢,这里题目中的测试点并不会把分钟数大于60作为一个测试点,所以不需要考虑分钟数的大小。
24小时制要与12小时制相对应,最应该注意的地方就是当时间为12点的时候,那就是直接打印输出12点,而如果是大于12点的时候,那就是要再减去12,比方说下午13点,那就是13-12=1点,1点也就是用到PM。
而至于24点呢,其实24点这个概念是不存在的,只存在第二天0点这个概念。
//12-24小时制
#include<stdio.h>
int main(){
int h;//小时
int m;//分钟
scanf("%d:%d", &h,&m);
if(h>=12){
if(h==12){
printf("%d:%d PM",h,m);
}
else {
printf("%d:%d PM",h-12,m);
}
}
else{
printf("%d:%d AM",h,m);
}
}
结果测试
总结
总的来说,基础编程题目集当中的题目难度都不大,只是需要大家仔细一些,然后把逻辑梳理得清楚一些就行了。
|