两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的 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。先分析已有代码的功能,确定输出目标,再反推横线处需要的代码。可用代入法验证。
将每个选项代入横线处验证是最可靠的方法。注意代码的完整逻辑和输出格式。
【考点】递推|辗转相减求 GCD|循环控制
GESP 一级 C++ 编程,"条件判断与循环"模块核心题型。命题人卡住考生对"辗转相减"过程的模拟能力——80% 人选错是因为没分清"减谁"和"减完给谁"。