微博上有个自称“大钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当10”,而到了23:01就会是“当12”。在午夜00:00到中午12:00期间(端点时间包括在内),钟是不敲的。
下面就请你写个程序,根据当前时间替大钟敲钟。
输入格式:
输入第一行按照hh:mm的格式给出当前时间。其中hh是小时,在00到23之间;mm是分钟,在00到59之间。
输出格式:
根据当前时间替大钟敲钟,即在一行中输出相应数量个Dang。如果不是敲钟期,则输出:
Only hh:mm. Too early to Dang.
其中hh:mm是输入的时间。
输入样例1:
19:05
输出样例1:
Dang*8
输入样例2:
07:05
输出样例2:
Only 07:05. Too early to Dang.
C++没思路不知道咋写
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
檀越@新空间 2025-12-27 18:41关注晚上好🌙🌙🌙
本答案参考通义千问根据题目要求,我们需要根据输入的时间来判断是否是“敲钟时间”,并输出相应的“Dang”数量。以下是详细的解决方案:
一、问题分析
-
敲钟规则:
- 如果当前时间正好是整点(如08:00),则“当”的数量等于小时数。
- 如果当前时间过了整点(如08:01),则“当”的数量等于下一个整点数。
- 例如:23:00 → Dang10;23:01 → Dang12。
- 钟只在后半天(即从中午12:00到午夜24:00)敲钟,且只敲1~12下。
-
非敲钟期的条件:
- 时间在00:00到12:00之间(包括端点),则不敲钟。
二、解决思路
-
解析输入时间:
- 将输入的
hh:mm格式字符串拆分为小时和分钟。
- 将输入的
-
判断是否为敲钟时间:
- 如果时间在
00:00到12:00之间,则不敲钟。 - 否则,进入敲钟逻辑。
- 如果时间在
-
计算敲钟次数:
- 如果是整点(分钟为0),则敲钟次数为小时数。
- 如果不是整点,则敲钟次数为下一小时数。
-
处理特殊范围:
- 钟只在后半天敲1~12下,因此:
- 如果当前小时在
12时之后(如13:00),则敲钟次数为(当前小时 % 12)。 - 如果当前小时是
12,则敲钟次数为12。 - 如果当前小时是
0或1,则敲钟次数为12(因为钟只在后半天敲)。
- 如果当前小时在
- 钟只在后半天敲1~12下,因此:
-
输出结果:
- 如果是敲钟时间,输出相应数量的
Dang。 - 否则,输出提示信息。
- 如果是敲钟时间,输出相应数量的
三、代码实现(C++)
#include <iostream> #include <string> using namespace std; int main() { string input; cin >> input; // 解析输入时间 int hh = stoi(input.substr(0, 2)); int mm = stoi(input.substr(3, 2)); // 判断是否为敲钟时间 if (hh >= 0 && hh < 12) { cout << "Only " << input << ". Too early to Dang." << endl; return 0; } // 计算敲钟次数 int next_hour = hh; if (mm > 0) { next_hour += 1; } // 处理后半天的敲钟规则(1~12) int dang_count = next_hour % 12; if (dang_count == 0) { dang_count = 12; // 例如12:00 -> 12次 } // 输出结果 for (int i = 0; i < dang_count; ++i) { cout << "Dang"; } cout << endl; return 0; }
四、测试样例说明
输入样例1:
19:05- 当前时间是19:05,不是整点。
- 下一小时是20点。
- 20 % 12 = 8 → 敲8次。
- 输出:
Dang*Dang*Dang*Dang*Dang*Dang*Dang*Dang
输入样例2:
07:05- 时间在07:05,属于00:00~12:00之间。
- 输出:
Only 07:05. Too early to Dang.
五、注意事项
- 输入格式必须严格为
hh:mm,否则程序可能出错。 - 程序中使用了
% 12来确保只输出1~12次。 - 如果当前时间是12:00,则直接输出12次“Dang”。
六、总结
- 关键点: 判断是否为敲钟时间、计算敲钟次数、处理后半天的规则。
- 重点部分:
- 判断是否为敲钟时间:
if (hh >= 0 && hh < 12) - 计算敲钟次数:
next_hour % 12,并处理特殊情况(如12:00)
- 判断是否为敲钟时间:
如果你还有其他疑问,欢迎继续提问!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报-