平成23年度秋期 応用情報技術者試験 午前 問22

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題されたIPA過去問題

メインプログラムを実行した結果はどれか。ここで,staticは静的割当てを,autoは動的割当てを表す。 メインプログラム auto int x,y; x=f(2)+f(2); y=g(2)+g(2); 関数f(u) auto int u; auto int v=1; v=v+u; return v; 関数g(u) auto int u; static int v=1; v=v+u; return v;

  1.  x:6 y:6
  2.  x:6 y:8
  3.  x:8 y:6
  4.  x:8 y:8
解答・解説を見る

正解:イ

AI解説

auto(動的割当て)の局所変数は呼出しのたびに初期化されるが、static(静的割当て)の変数は初回に1度だけ初期化され、呼出し間で値が保持される。f(2)は毎回v=1から始まりv=1+2=3なので、x=f(2)+f(2)=3+3=6。g(2)は1回目v=1+2=3、2回目は保持されたv=3にv=3+2=5となり、y=3+5=8。したがってイが正解である。 ア: y:6はgのstatic変数も毎回初期化されると誤解した場合の値である。 イ: 正しい。x=3+3=6、y=3+5=8。staticのvが2回目の呼出しで前回の値3を引き継ぐことがポイントである。 ウ: x:8はfのautoな変数vが値を保持すると誤解した場合の値である。 エ: x:8 y:8は両関数とも値を保持すると誤解した場合の値である。 💡 「auto=呼ばれるたび生まれ変わる、static=前回の値を覚えている」。static変数の初期化は最初の1回だけという点が、この型の問題の唯一の急所である。

出典:平成23年度 秋期 応用情報技術者試験 午前 問22 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問