GESP 一级 · GESP 202512 C++ 一级 第 12 题

选择题 · 答案 A · 考点:递推、循环控制

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

题目

两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的 C++ 代码用于实现该操作,横线处应该填写的代码是( )。

int N, M;
cin >> N >> M;
while (N != M) {
    if (N > M)
        ____________;
    else
        ____________;
}
cout << N;

A. 1 N = N - M 2 M = M - N

B. 1 M = M - N 2 N = N - M

C. 1 M = N - M 2 N = M - N

D. 1 N, M = M, N 2 M, N = N, M

答案:A

考点

递推循环控制

解题思维

答案A。先分析已有代码的功能,确定输出目标,再反推横线处需要的代码。可用代入法验证。

常见错误

将每个选项代入横线处验证是最可靠的方法。注意代码的完整逻辑和输出格式。

详细解析(节选)

【考点】递推|辗转相减求 GCD|循环控制

1. 🎯 考纲定位

GESP 一级 C++ 编程,"条件判断与循环"模块核心题型。命题人卡住考生对"辗转相减"过程的模拟能力——80% 人选错是因为没分清"减谁"和"减完给谁"。

同考点真题

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