プログラミングの基礎(擬似言語のトレース)
÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 f を f(9087) として呼び出したときの戻り値はどれか。
○整数型: f(整数型: x)
整数型: s ← 0
while (x > 0)
s ← s + x mod 10
x ← x ÷ 10
endwhile
return s
- A4
- B15
- C24
答えと解説を見る
正解:C. 24
x mod 10 は x の一の位を取り出し、x ← x ÷ 10 は小数点以下を切り捨てる整数除算になるので、一の位を取り除きます。mod は + より優先順位が高いので、s ← s + x mod 10 は s ← s + (x mod 10) の意味です。x は 9087、908、90、9、0 と変わり、s には 7、8、0、9 が順に足されて 7 + 8 + 0 + 9 = 24 になります。各桁の数字の和を求める関数です。
- A. (s + x) mod 10 と、+ を先に計算した場合の値です。mod は + より先に計算します。
- B. while (x ≧ 10) のように、最上位の桁9を足す前に止めた場合の値です。
- C. 正しい。9 + 0 + 8 + 7 = 24 です。