函数题 7-7 12-24小时制【PAT】
文章目录
- 题目
- 输入格式
- 输出格式
- 输入样例
- 输出样例
- 题目
- 解题思路
- 完整代码
编程练习题目集目录
题目
编写一个程序,要求用户输入 24 24 24 小时制的时间,然后显示 12 12 12 小时制的时间。
输入格式
输入在一行中给出带有中间的
:
:
: 符号(半角的冒号)的
24
24
24 小时制的时间,如
12
:
34
12:34
12:34 表示
12
12
12 点
34
34
34 分。当小时或分钟数小于
10
10
10 时,均没有前导的零,如
5
:
6
5:6
5:6 表示
5
5
5 点零
6
6
6 分。
提示:在
s
c
a
n
f
scanf
scanf 的格式字符串中加入
:
:
:,让
s
c
a
n
f
scanf
scanf 来处理这个冒号。
输出格式
在一行中输出这个时间对应的 12 12 12 小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串 A M AM AM 或表示下午的字符串 P M PM PM。如 5 : 6 P M 5:6 PM 5:6PM 表示下午 5 5 5 点零 6 6 6 分。注意,在英文的习惯中,中午 12 12 12 点被认为是下午,所以 24 24 24 小时制的 12 : 00 12:00 12:00 就是 12 12 12 小时制的 12 : 00 P M 12:00 PM 12:00PM;而 0 0 0 点被认为是第二天的时间,所以是 0 : 0 A M 0:0 AM 0:0AM。
输入样例
21:11
输出样例
9:11 PM
题目
解题思路
用 s c a n f scanf scanf 函数输入,然后判断小时数,如果正好等于 12 12 12,则为凌晨 0 0 0 点,小时数置为 0 0 0,输出 A M AM AM;如果等于 12 12 12,则输出 P M PM PM;如果大于 12 12 12,则减去 12 12 12,输出 P M PM PM;如果小于 12 12 12 就直接输出 A M AM AM 即可。
完整代码
#include<iostream>
using namespace std;
int main(void)
{
int h, m;
cout << "请输入一个时间:"; // 提交时注释此行
cin >> h >> m;
if (h == 24) // 24 点输出 0:0 AM
{
h = 0;
cout << h << ":" << m << " AM" << endl;
}
else if (h > 12) // 下午
{
h -= 12;
cout << h << ":" << m << " PM" << endl;
}
else if (h == 12) // 12 点输出 12:00 PM
cout << h << ":" << m << " PM" << endl;
else // 上午
cout << h << ":" << m << " AM" << endl;
return 0;
}