体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【選択式問題】端数処理パズル【言語不問】解答と解説

端数処理パズル

本問題は、仮想コードのルールに従った処理の結果を、選択肢から選ぶというものでした。

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

あなたは、端数処理の女神「ラウン=ディング」の神殿にやって来ました。

この神殿では、女神の出す問題に正解すれば富を約束され、間違うと死を約束されます。

あなたは、歴戦のプログラマーとして、女神の意図をくんで解答しなければなりません。

この神殿では、仮想コードが提示されます。その計算結果を、選択肢から選んでください。

// 仮想コードのルール
Math.ceil(n) …… nの端数(小数点以下)を切り上げ
Math.floor(n) …… nの端数(小数点以下)を切り捨て
Math.round(n) …… nの端数(小数点以下)を四捨五入
A * B …… AとBを乗算
out(n) …… nを整数として出力

問題1

// 問題
out(Math.ceil(1.23) * Math.floor(4.56));

// 選択肢
4
5
8
10

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理
out(Math.ceil(1.23) * Math.floor(4.56)); をまずは計算。

「Math.ceil」は切り上げなので、「1.23」は「2」になる。

out(2 * Math.floor(4.56));

↓↓↓↓↓

out(2 * Math.floor(4.56)); を計算。

「Math.floor」は切り捨てなので、「4.56」は「4」になる。

out(2 * 4);

↓↓↓↓↓

out(2 * 4); を計算。

「2 * 4」は「8」になる。

out(8);

なので「8」を出力。

上記の通り、答えは3番目の選択肢の『8』になります。

Javaサンプル

以下、サンドボックスの言語「Java8」を利用して、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// 問題
out(Math.ceil(1.23) * Math.floor(4.56));
}
// 関数
public static void out(double n) {
System.out.println((int)n); // 出力
}
}

// 出力結果
8

JavaScriptサンプル

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 関数
var out = function(arg) {console.log(arg | 0)};

// 問題
out(Math.ceil(1.23) * Math.floor(4.56));

// 出力結果
8

問題2

// 問題
out(Math.round(1.23) * Math.round(4.56));

1 2 3次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。
GetNews girl / GetNews boy

オスカー2018年晴れ着撮影会