基本情報技術者試験のC言語問題の傾向・勉強方法

基本情報技術者試験の午後問題の1つであるプログラミングでは、C言語・Java・表計算・COBOL・アセンブラから1つ選択して問題を解くことになります。このページでは、この中のC言語に注目し、過去問題から、どんな問題が出題され、どんな知識や力があれば解く事ができたのかを分析したいと思います。

試験毎の出題問題

実際に基本情報技術者試験の各回で、どのような問題が出題されたかを見ていきたいと思います。過去5年分(10回分)で出題された問題の概要と、設問内容を下記に記載してみました。

平成30年秋期

問題の概要

列車の運行シミュレーション

設問内容

設問1

(a)条件判断文の穴埋め

設問2

(b)条件判断文の穴埋め
(c)処理の穴埋め
(d)関数の引数の穴埋め

設問3

(e)プログラム実行時の結果
(f)プログラム実行時の結果

平成30年春期

問題の概要

品番毎のレコード件数と合計金額の集計

設問内容

設問1

(a)変数の型の穴埋め
(b)処理の穴埋め
(c)処理の穴埋め

設問2

(d)プログラムがうまく動かない時の条件
(e)プログラムがうまく動かない時の条件
(f)プログラムがうまく動かない時の条件

平成29年秋期

問題の概要

回文検索

設問内容

設問1

(a)処理の穴埋め
(b)条件判定文の穴埋め
(c)条件判定文の穴埋め

設問2

(d)関数の引数穴埋め
(e)ループ条件の穴埋め

設問3

(f)プログラム実行時の結果
(g)プログラム実行時の結果

平成29年春期

問題の概要

マーク式答案の採点

設問内容

設問1

(a)関数の引数穴埋め
(b)条件判定文の穴埋め
(c)関数の引数穴埋め

設問2

(d)プログラム実行時の結果
(e)&&と&演算子の違いに関する設問

設問3

(f)プログラム実行時の結果
(g)プログラム実行時の結果

平成28年秋期

問題の概要

開発作業順序スケジューリング

設問内容

設問1

(a)配列の添字の穴埋め
(b)配列の添字の穴埋め
(c)配列の添字の穴埋め
(d)処理の穴埋め

設問2

(e)プログラム実行時の結果
(f)プログラム実行時の結果

平成28年春期

問題の概要

フラクタル図形生成

設問内容

設問1

・フラクタル図形の理解を問う設問

設問2

・フラクタル図形の理解を問う設問

設問3

(a)処理の穴埋め
(b)処理の穴埋め
(c)処理の穴埋め

平成27年秋期

問題の概要

制限エリアの入退室記録

設問内容

設問1

(a)処理の穴埋め
(b)処理の穴埋め
(c)処理の穴埋め

設問2

(d)処理実行のタイミング
(e)処理実行のタイミング
(f)関数の引数の穴埋め
(g)関数の引数の穴埋め

平成27年春期

問題の概要

文字列暗号化

設問内容

設問1

(a)プログラム実行時の結果
(b)プログラム実行時の結果
(c)プログラム実行時の結果
(d)プログラム実行時の結果
(e)プログラム実行時の結果

設問2

プログラム実行時の結果

平成26年秋期

問題の概要

利用者のIDと権限管理

設問内容

設問1

(a)ループ条件の穴埋め
(b)条件判定文の穴埋め
(c)処理の穴埋め
(d)条件判定文の穴埋め

設問2

(e)条件判定文の穴埋め
(f)条件判定文の穴埋め

平成26年春期

問題の概要

文字列整形

設問内容

設問1

(a)処理の穴埋め
(b)処理の穴埋め
(c)処理の穴埋め
(d)条件判定文の穴埋め

設問2

(e)条件判定文の穴埋め
(f)処理の穴埋め

問題の傾向

出題問題の内容から言える問題の傾向は次の4つです。

知識だけで解ける問題はほぼ無い

赤字で記した部分は知識が必要になる設問です。例えばC言語での&と&&の違いを問う設問であったり、ファイルポインタを宣言する時の型を問う設問などになります。この赤字で記した問題は知識があれば解く事ができる問題になりますので、知識さえあればすぐに解くことができます。C言語やってる人にとってはラッキー問題だと思います。ただ、上の一覧を見てもらえばわかるように知識だけで解ける問題はほとんどありません

知識に関して補足しておくと、マルチスレッドや関数ポインタなどの高度な知識を問う問題は過去問では出題されていませんでした。ですので、C言語問題を解く上で必要になる知識はC言語の基礎知識のみになります。

穴埋めしてプログラムを作成する問題が大半

青字で記した部分はプログラムの穴埋めをしてプログラムを完成させる問題です。この問題が一番多いです。この問題はプログラムの仕様を理解し、プログラムの仕様通りに動作するように、穴埋め周辺のプログラムから論理的に考えて答えを導く必要があります。

ですので、C言語の問題はプログラムの仕様をしっかり読む力と穴埋め部分に入れるプログラムを論理的に導く論理的思考能力が必要になる問題になります。

プログラム実行結果を問う問題も頻出

プログラムの穴埋め問題の次に多いのが緑字で記したプログラムの実行結果を問う問題です。こちらは穴埋めしてプログラムが作成できれば、指定されたデータが入力された場合に、プログラムの各変数がどのように変化していくかを追っていくことができれば、時間さえあれば解ける問題だと思います。

スポンサーリンク

勉強方法・対策方法

基礎知識を身につける

前述の通り知識だけでは回答できない設問がほとんどですが、基礎知識すら無い状態だと流石に点数を稼ぐのは難しいです。C言語の基礎知識(構造体・文字列・配列・再帰処理の知識)あたりはしっかり押さえておきましょう。C言語の知識(文法や型)に不安がある方はC言語の参考書1冊分は一通り読んでおいたほうがいいです。

C言語の参考書1冊分さえ理解していれば、知識的には解答には困らないと思います。逆に知識ばかりつけても前述の通り知識だけで解ける問題は非常に少ないので試験には役に立たないと思います。C言語問題を選択しようと考えている人はC言語の知識がすでにある方が大半だと思いますので、基礎知識をつける勉強は不要な方が多いと思います。

一からC言語を学びたい、という方に関しては下記の書籍がオススメです。古い本のため教科書的な内容で図も少なく若干とっつきにくいですが、内容は充実しています。C言語関連の名著の1つで、この本でC言語を学んだ・復習したという方はかなり多いと思います。C言語を使う職業を目指している方であれば、この本で学ぶとC言語に関する基礎知識は十分に身につきます。

もっととっつきやすくて図も多い参考書が良いという方は下記のような最近出版された本が良いと思います。内容的にも基本情報を受験する上では十分です。

穴埋め問題の対策

基礎知識が身についていれば、あとは過去問を解くのが一番良い基本情報技術者試験対策になると思います。穴埋め問題の対策も過去問を解くので良いです。

ただし、過去問を解く上では必ず各選択肢が正解である or 不正解である理由を考えてください。なぜその選択肢が合っていて、なぜ他の選択肢が間違っているのかを全ての選択肢に対して行うのが一番良い穴埋め対策です。なんとなくコレ!という感じで解くのではダメです。必ず理由を考えてください。最初はいくら時間をかけても良いです。

理由づけを行うためには、「問題のプログラムの仕様を理解する力」と、「穴埋めの周りのプログラムから論理的に考える力」が必要です。理由づけを行なって回答することを繰り返せば、この2つの力を養うことができます。この2つの力は基本情報技術者試験の必須問題であるアルゴリズム問題を解く上でも必要な力です。これらの力を養うことが、基本情報技術者試験の対策になりますので、是非実践してみてください。

実行結果を問う設問の対策

プログラムの実行結果を問われる設問に対する設問も過去問を解くことが一番の対策になります。プログラムが実行されたときに、変数がどのように変化していくかをひたすら追っていく訓練をすれば良いです。メモや図などを書きながら実践してください。こちらに関しては慣れることが一番重要だと思います。

地道に変数の変化を追っていけば必ず解ける問題ですが、プログラムが完成していないと解けません。ですので、穴埋め問題の対策の方が重要になります。

まとめ

C言語問題の出題傾向と対策について記事を書いてみました。C言語問題は高度な知識は必要ないにも関わらず難しいです。難しい理由は「問題のプログラムの仕様を理解する力」と「穴埋めの周りのプログラムから論理的に考える力」が必要だからです。結局アルゴリズム問題が難しいのと同じ理由ですね。逆にC言語を解く力がつけばアルゴリズムの得点にもつながります。午後問題の得点源になりますので、是非「問題のプログラムの仕様を理解する力」と「穴埋めの周りのプログラムから論理的に考える力」を養って試験に挑んでください。

★オススメページ★
C言語の過去問解説を下記で行なっています。C言語問題の解き方がわからない場合は是非読んでみてください!

基本情報技術者試験 午後問題「C言語」過去問の解き方 解説 まとめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です