PTA基础编程题目集 7-7 12-24小时制(C语言实现)

发布时间:2026/7/27 6:46:59
PTA基础编程题目集 7-7 12-24小时制(C语言实现) 摘要本文介绍了一个 C 语言程序用于将用户输入的 24 小时制时间转换为 12 小时制格式并输出。程序通过scanf直接解析冒号分隔的小时和分钟并根据小时值判断并输出对应的 AM上午或 PM下午时间。输入和输出的时间格式保持一致不补前导零并遵循英文时间表示习惯例如12:00 视为 PM0:00 视为 AM。题目描述编写一个程序要求用户输入 24 小时制的时间然后显示 12 小时制的时间。输入格式输入在一行中给出带有中间的 : 符号半角的冒号的 24 小时制的时间如 12:34 表示 12 点 34 分。当小时或分钟数小于 10 时均没有前导的零如 5:6 表示 5 点零 6 分。提示在 scanf 的格式字符串中加入 :让 scanf 来处理这个冒号。输出格式在一行中输出这个时间对应的 12 小时制的时间数字部分格式与输入的相同然后跟上空格再跟上表示上午的字符串 AM 或表示下午的字符串 PM。如 5:6 PM 表示下午 5 点零 6 分。注意在英文的习惯中中午 12 点被认为是下午所以 24 小时制的 12:00 就是 12 小时制的 12:0 PM而 0 点被认为是第二天的时间所以是 0:0 AM。输入样例21:11输出样例9:11 PM转换逻辑流程图下面是 24 小时制转 12 小时制的逻辑判断流程图是否是否是否输入 24 小时制时间hour:minutehour 0?输出 0:minute AMhour 12?输出 hour:minute AMhour 12?输出 12:minute PMhour hour - 12输出 hour:minute PM代码部分实现#includestdio.hintmain(){inthour,minute;// 读取用户输入的 24 小时制时间格式为 hour:minutescanf(%d:%d,hour,minute);// 根据小时值转换为 12 小时制并输出if(hour0){// 0 点午夜在 12 小时制中表示为 0:xx AM第二天的凌晨printf(0:%d AM,minute);}elseif(hour12){// 1‑11 点直接输出并标记为上午AMprintf(%d:%d AM,hour,minute);}elseif(hour12){// 12 点中午在 12 小时制中仍为 12:xx但标记为下午PMprintf(12:%d PM,minute);}else{// 13‑23 点转换为 1‑11 点并标记为下午PMprintf(%d:%d PM,hour-12,minute);}return0;}