演習: ネストしたループ
8-a. 九九の一部を出力
Section titled “8-a. 九九の一部を出力”ネストしたループを使って、1の段から5の段までの九九を出力してください。各段は1行にまとめ、値の間はタブ文字("\t")で区切ります。
出力例:
1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 18 21 24 274 8 12 16 20 24 28 32 365 10 15 20 25 30 35 40 45ヒント
本文 2. 九九の表 と同じ構造です。外側のループの範囲を変えてください。
8-b. ネストしたループの出力予測
Section titled “8-b. ネストしたループの出力予測”以下のコードの出力結果を予測してから実行してください。
let count = 0;
for (let i = 0; i < 3; i++) { for (let j = 0; j < 4; j++) { count++; }}
console.log(count);ヒント
外側のループが1周するたびに、内側のループが何回実行されるかを考えてください。
8-c. 三角形の出力
Section titled “8-c. 三角形の出力”ネストしたループを使って、以下のような三角形を出力してください。
出力例:
***************ヒント
外側のループで行数を制御し、内側のループで各行の * の個数を制御します。i 行目に * が i 個並びます。
8-d. すべてのペアの出力予測
Section titled “8-d. すべてのペアの出力予測”以下のコードの出力結果を予測してから実行してください。
const arr = [10, 20, 30, 40];
for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { console.log(arr[i] + "," + arr[j]); }}ヒント
i = 0 のとき j は 1, 2, 3 と進みます。i = 1 のとき j は 2, 3 と進みます。各ペアを順に書き出してみてください。
8-e. ネストしたループの実行回数予測
Section titled “8-e. ネストしたループの実行回数予測”以下のコードの出力結果を予測してから実行してください。
let count = 0;for (let i = 1; i <= 4; i++) { for (let j = i; j <= 4; j++) { count++; }}console.log(count);ヒント
内側のループの開始位置が j = i なので、i が増えるにつれて回数が減っていきます。i = 1 のとき 4 回、i = 2 のとき 3 回、…と続きます。合計を計算してください。
8-f. 逆三角形の出力
Section titled “8-f. 逆三角形の出力”ネストしたループを使って、以下のような逆三角形を出力してください。
出力例:
***************ヒント
8-c と * の個数が逆になります。外側のループを 5 から 1 に減らしていくか、内側のループの範囲を j <= 5 - i + 1 のように変えます。