過去問.com - 資格試験の過去問 | 予想問題の解説つき無料問題集

ITパスポートの過去問 令和5年度 テクノロジ系 問5

問題

このページは問題閲覧ページです。正解率や解答履歴を残すには、 「条件を設定して出題する」をご利用ください。
[ 設定等 ]
手続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 .
1, 2, 3, 4
   2 .
1, 3, 2, 4
   3 .
3, 1, 4, 2
   4 .
4, 3, 2, 1
( 令和5年度 ITパスポート試験 テクノロジ系 問5 )
このページは問題閲覧ページの為、解答履歴が残りません。
解答履歴を残すには、
条件を設定して出題する」をご利用ください。

この過去問の解説 (3件)

4

このような問題はプログラムの動きを順に確認していくことがポイントです

nを1から3(integerArrayの要素数[4]-1)まで1ずつ増やす

mを1から3(integerArrayの要素数[4]-n)まで1ずつ増やす

上記値を配列に沿って当てはめていきます

n=1

integerArray[1]=2>integerArray[2]=4

integerArray[2]=4>integerArray[3]=1

2つの位置を入れ替え=integerArray={2,1,4,3}

integerArray[3]=4>integerArray[4]=3

2つの位置を入れ替え=integerArray={2,1,3,4}

n=2

integerArray[1]=2>integerArray[2]=1

2つの位置を入れ替え=integerArray={1,2,3,4}

integerArray[2]=2、integerArray[3]=3

n=3

integerArray[1]=1、integerArray[2]=2

選択肢1. 1, 2, 3, 4

ループ処理時点

integerArray={1,2,3,4} となっているため、本肢が正解です

選択肢2. 1, 3, 2, 4

順番が誤っています

選択肢3. 3, 1, 4, 2

順番が誤っています

選択肢4. 4, 3, 2, 1

順番が誤っています

付箋メモを残すことが出来ます。
2

疑似言語でプログラミングされたものを手順通りに進めていきます。

文章理解力が試される問題ですが、問題文の通りに進めていくと自ずと正答を導くことができます。

問題文は、変数nとmを用いて配列の中の[2、4、1、3]の4つの数字を並べ替えていく手続を疑似言語で書き表しています。

この問題でまず注目すべきは、「for」を含む構文と「if」を含む構文です。

for を含む構文(繰り返しの手続)は2つありそれぞれ、

① 変数nを1から+1をし、配列中の数字の数になるまで繰り返す

② 変数mを1から+1をし、変数nになるまで繰り返す

という意味を持ち、if を含む構文(手続きの条件)は、

① 配列中の数字が右隣りの数字よりも大きい

という意味を持ちます。

手続を進めていくと、

① n=1 配列[1]= 2 は、配列[2]= 4 よりも小さいので、

      並べ替えなし

② n=2 配列[1]= 2 は、配列[2]= 4 よりも小さいので、

      並べ替えなし

      配列[2]= 4 は、配列[3]= 1 よりも大きいので、

      並べ替えあり

③ n=3 配列[1]= 2 は、配列[2]= 1 よりも大きいので、

      並べ替えあり

      配列[2]= 2 は、配列[3]= 4 よりも小さいので、

      並べ替えなし

      配列[3]= 4 は、配列[4]= 3 よりも大きいので、

      並べ替えあり

選択肢1. 1, 2, 3, 4

並べ替えの結果[ 1 、 2 、 3 、 4 ]となり、正解は本肢となります。 

2

アルゴリズムに関する問題です。

(nを1から(integerArrayの要素数 − 1)まで1ずつ増やす)とは、

 integerArrayの要素数は4のため、nを1から3まで1ずつ増やします。

②(mを1から(integerArrayの要素数 − n)まで1ずつ増やす)とは、

 nに入る数が、①より1と2と3のため、②にあてはめて順番に処理していきます。

③①と②よりnとmの数値が確定したら、

if(integerArray[m] > integerArray[m + 1])

integerArray[m]とintegerArray[m + 1]の値を入れ替える

の処理を実行します。

上記を踏まえて当てはめていくと

1)n = 1、m = 1のとき   

 integerArray[1]=2、integerArray[2]=4のため、入れ替えなしです。

2)n = 1、m = 2のとき

 integerArray[2]=4、integerArray[3]=1のため、

 入れ替えると{2, 1, 4,3}となります。

3)n = 1、m = 3のとき

 integerArray[3]=4、integerArray[4]=3のため、

 入れ替えると{2, 1, 3,4}となります。

4)n = 2、m = 1のとき

 integerArray[1]=2、integerArray[2]=1のため、

 入れ替えると{1,2,3,4}となります。

5)n = 2、m = 2のとき

 integerArray[2]=2、integerArray[3]=3のため、入れ替えなしです。

6)n = 3、m = 1のとき

 integerArray[1]=1、integerArray[2]=2のため、入れ替えなしです。

よって、{1,2,3,4}となります。

選択肢1. 1, 2, 3, 4

{1,2,3,4}となるため、本選択肢は正しいです。

まとめ

アルゴリズムの問題は、丁寧にあてはめて順番に解いていくと答えが導き出せます。

あせらずに取り組みましょう。

問題に解答すると、解説が表示されます。
解説が空白の場合は、広告ブロック機能を無効にしてください。
他のページから戻ってきた時、過去問ドットコムはいつでも続きから始めることが出来ます。
また、広告右上の×ボタンを押すと広告の設定が変更できます。
このITパスポート 過去問のURLは  です。
付箋は自分だけが見れます(非公開です)。