跳到正文

令和4年度 ITパスポート試験 問79

这道题的解析和你的作答记录。

問79
頻出度★★☆

流れ図で示す処理を終了したとき,x の値はどれか。 開始 ↓ x を 98 とする ↓ y を 42 とする ↓ 繰返し(x = y)(注) ↓ (分岐)x : y  ・「>」の場合: x - y の計算結果を新たな x とする  ・「≦」の場合: y - x の計算結果を新たな y とする ↓ 繰返し ↓ 終了 (注)ループ端の条件は,終了条件を示す。

出典 令和4年度 ITパスポート試験 問79
解説

問 79标注在循环端(循环)上的(注)表示「终止条件」

  • 错误ア

    x 不会变成 0。这个处理不是把除法余数变为 0 的步骤,而是不断用大的一方减去小的一方直到两者相等的辗转相减法,所以最后停在最大公约数 14,不会到达 0。

  • イ

    正解 这个流程图是用只使用减法的欧几里得算法(辗转相减法)求 98 和 42 的最大公约数的处理。根据(注),当 x = y 时循环终止。在分支 x : y 中,当 x > y 时把 x - y 赋给 x,当 x ≦ y 时把 y - x 赋给 y。从 x = 98、y = 42 开始依次追踪:首先 98 > 42,所以 x = 98 - 42 = 56;接着 56 > 42,所以 x = 56 - 42 = 14;然后 14 ≦ 42,所以 y = 42 - 14 = 28;再接着 14 ≦ 28,所以 y = 28 - 14 = 14,此时 x = y(14 = 14)成立而终止。因此终止时 x 的值为 14,选项イ正确。

  • 错误ウ

    28 是中途赋给 y 的值(42 - 14 = 28),而不是所问的 x 的值。而且处理并不在此结束,还会继续到 y = 28 - 14 = 14。

  • 错误エ

    56 只是第 1 次计算中赋给 x 的中间过程值(98 - 42 = 56)。此时还没有达到 x = y,循环不会终止,所以不是最终值。

ここがポイント
  • 标注在循环端(循环)上的(注)表示「终止条件」。前提是要正确理解「当 x = y 时就跳出循环」这一读法。
  • 本题是减法型的欧几里得算法(辗转相减法),反复进行用大的一方减去小的一方的操作,求 98 和 42 的最大公约数 14。要点是从初始值开始,一步一步仔细追踪分支和赋值。
用語
解答問79イ
练这一题

作答记录