• 年度別
  • 分野別
  • キーワード
  • 検索
  • 成績を見る
  • 掲示板
  • サイト情報
  • ITパスポート試験
    令和5年 第60問


    問60

    手続printArrayは、配列integerArrayの要素を並べ替えて出力する。手続printArrayを呼び出したときの出力はどれか。ここで、配列の要素番号は1から始まる。

    [プログラム]
    ○printArray()
     整数型: n, m
     整数型の配列: integerArray ←{2, 4, 1, 3}
     for(nを1から(integerArrayの要素数 − 1)まで1ずつ増やす)
      for(mを1から(integerArrayの要素数 − n)まで1ずつ増やす)
       if(integerArray[m] > integerArray[m + 1])
        integerArray[m]とintegerArray[m + 1]の値を入れ替える
       endif
      endfor
     endfor
     integerArrayの全ての要素を先頭から順にコンマ区切りで出力する

  • 1, 2, 3, 4
  • 1, 3, 2, 4
  • 3, 1, 4, 2
  • 4, 3, 2, 1


    (令和5年 ITパスポート試験 第60問 テクノロジ系/アルゴリズムとプログラミング)

    解説

    (ア)1, 2, 3, 4
    この問題の正解率:30%(やや低い)

    解き方(トレースの流れ)
    初期状態: {2, 4, 1, 3}

    n = 1 のループ処理
    比較 2 vs 4 → no swap → {2, 4, 1, 3}
    比較 4 vs 1 → swap → {2, 1, 4, 3}
    比較 4 vs 3 → swap → {2, 1, 3, 4}

    n = 2 のループ処理
    比較 2 vs 1 → swap → {1, 2, 3, 4}
    比較 2 vs 3 → no swap

    n = 3 のループ処理
    比較 1 vs 2 → no swap

    ループ完了 → ソートされた配列 {1, 2, 3, 4} を出力


    【ワンポイントアドバイス】
    擬似言語の問題では「実際に動かしてみる」=トレースが有効です。
    - 初期配列に注目
    - forの範囲を確認
    - if文で swap があるかどうか確認