スゴ技

平成23年度 秋 基本情報技術者試験 【問9】(その1)

Blog: |

ブログの次男こと宮本です.

先日,秋の情報処理技術者試験が実施されました.今回は,春試験が延期となった特別試験から期間が短かったため,結果を知ってから勉強するには少し時間が足りなかったのではないかと思います.そのせいかどうかはわかりませんが,難易度は比較的易しかったのではないでしょうか.思い過ごしかも知れませんが.

さてさて,例によってそんな試験問題の解説です.今回も基本情報技術者試験午後の C 言語を担当したいと思います.内容的には,単純な演算問題ですが,優先順位や制御構造など,順番を気にする要素が多かったように思います.では以下に解説を.

【設問1】(1) 演算の優先順位に関わる問題です.また,整数同士の演算についても知識が問われます.int 型変数である x, y ( 0 < x < y ) について,( x * 10 / y ) と ( x / y * 10 ) が同じかどうかを聞いています.数学的には同じなのかも知れませんが,後者の式は,ともに整数である x, y について, x / y を先に実行してしまうと,小数部が切り捨てられて,その大小関係より計算結果は常に 0 となってしまいます.一方,前者の式は,時により x * 10 が y の値を超えることもあり得ますので,常に 0 とは限らず,計算結果はその整数部になります.これは,実数の範囲では交換可能な乗算と除算の計算順位が,整数の範囲では必ずしもそうならないことを示しています.よって小問 a の答は,選択肢エの,「除算は乗算より先に実行され,正しい値が出力されない」となります.

(2) 制御文 while の動きに関しての設問です.まず, 3 / 8 を実数の範囲まで拡張して計算すると,答が 0.375 となることを確認しておきましょう.その上で,普通に繰り返し文を追いかけてみます.最初の値は x が 3, y が 8 ですので,x * 10 を y で割ると,商が 3, 余りが 6 となります.この状況で 2 回目の判定に移りますので,小問 b の答は,キの「 6 」となります.以下同様に繰り返し,3回目の判定時には x が 4 に,4 回目の判定時には,その前 3 回目の計算で割り切れるため,x が 0 となります.ここで while の条件が崩れますので,4回の判定でループを抜けることになります.よって小問 c の答は,オの「 4 」となります.

・・・いかがでしたでしょうか?ここまでは比較的難易度は低いと思われます.正直なところ,授業で進んでいる範囲で十分に解けます.型・演算・制御文と少しの関数の知識があれば十分です.このまま後半も容易であればよいのですが,続きは次回に回すことにします.お楽しみに.

2011年(平成23年度)秋期の解説

Date:

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動