HOME»基本情報技術者試験掲示板»平成22年春期午後問9
投稿する
平成22年春期午後問9 [4404]
なななさん(No.1)
https://www.fe-siken.com/kakomon/22_haru/pm09.html
eの正答がカなのですが、選択肢の処理がどういった意味を持つのかわかりません。
よろしければ回答お願いします。
eの正答がカなのですが、選択肢の処理がどういった意味を持つのかわかりません。
よろしければ回答お願いします。
2022.08.30 16:30
nsさん(No.2)
★FE シルバーマイスター
図2~4を参照すると、キーワード部分には必ず"D○○"や"R○"といった文字列が現れることがわかります。○の部分は数字が入ります。具体例としては"D2"や"R30"などです。
結論だけを言うと、空欄eを囲むwhileブロックを抜けるとき、iの値を2や30といった数値にするための処理です。
選択肢カの意味ですが、(i * 10) + (ch2 - '0')と分けて考えます。
i * 10については単純で、数値が二ケタになるケースをカバーしています。文字列を左から読み込んでいくので、"12"という文字列があれば、1周目は'1'、2周目は'2'を参照することになります。1 * 10 + 2 = 12とできるようになっています。
ch2 - '0'の部分ですが、文字コードの'1'を数値の1に変換しています。ASCIIコードでは'0'~'9'が順番に並んでいることを利用しており、C/C++では時々利用されるワザです。
結論だけを言うと、空欄eを囲むwhileブロックを抜けるとき、iの値を2や30といった数値にするための処理です。
選択肢カの意味ですが、(i * 10) + (ch2 - '0')と分けて考えます。
i * 10については単純で、数値が二ケタになるケースをカバーしています。文字列を左から読み込んでいくので、"12"という文字列があれば、1周目は'1'、2周目は'2'を参照することになります。1 * 10 + 2 = 12とできるようになっています。
ch2 - '0'の部分ですが、文字コードの'1'を数値の1に変換しています。ASCIIコードでは'0'~'9'が順番に並んでいることを利用しており、C/C++では時々利用されるワザです。
2022.08.30 22:44
なななさん(No.3)
回答ありがとうございます!二桁への対応というところに全く気付けませんでした...たしかにキーワードは50こまでなのでこのカバーで事足りますね。
手間かけさせましたm(__)m
手間かけさせましたm(__)m
2022.08.31 11:04