GESP 一级 · GESP 202312 C++ 一级 第 3 题

选择题 · 答案 B · 考点:同余与模运算

← 整套速查表 GESP 一级 全部真题

题目

假设现在是上午十点,求出 $N$ 小时(正整数)后是第几天几时,如输入 $20$ 小时则为第 $2$ 天 $6$ 点,如 $N$ 输入 $4$ 则为今天 $14$ 点。为实现相应功能,应在横线处填写代码是()。

int N, dayX, hourX;
cin >> N;
dayX = _____, hourX = _____;
if (dayX == 0)
    cout << "今天" << hourX << "点";
else
    cout << "第" << (dayX + 1) << "天" << hourX << "点";
答案:B

考点

同余与模运算

解题思维

这题核心就是算'总小时数',然后用整数除法和取模分别求天数和小时数。先别管起点是几点,先把 N 小时加到当前时间上,再套用 24 小时一循环的规律,就能直接填出答案。

常见错误

最容易掉进两个坑:一是把除法和取模写反,导致 dayX 算出的是小时数,输出变成'第几小时'这种荒谬结果;二是忽略起点 10 点,直接用 N%24 和 N/24,这样算出来的是从 0 点开始的时间,完全对不上题目要求的'上午十点',比如 N=20 时算成今天 20 点而不是第二天 6 点。还有少数人会选 D 这种静态常量,显然没用到输入 N,直接排除。

详细解析(节选)

【考点】模运算|整数除法|时间计算

1. 考纲定位

这道题出自《GESP 考试大纲》第 7 级'算法基础'模块,重点考查模运算与整数除法在周期性计算中的应用。命题人特意选了'上午十点'这个非零起点,就是为了卡住那些只会背公式'天数=N/24,小时=N%24'的考生——他们往往忽略了时间计算必须从当前时刻累加,而不是从 0 点起步。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断