13 for 文

while 文の「初期化・条件・更新」を1行でまとめて書ける for 文を学ぶ。
回数が決まっている繰り返しには for 文が適している。


13-1 for 文の基本構文

for (初期化; 条件式; 更新処理) {
    /* 繰り返したい処理 */
}
部分役割
初期化ループ開始前に1回だけ実行i = 1
条件式各ループ開始前に評価。偽になったら終了i <= 3
更新処理各ループの最後に実行i++

while 文との対応

/* while 文で書いた場合 */        /* for 文で書いた場合 */
int i = 1;                        for (i = 1; i <= 3; i++) {
while (i <= 3) {                      printf("%d回目\n", i);
    printf("%d回目\n", i);        }
    i++;
}

同じ動作をより簡潔に書けるのが for 文の利点。

13_01_for_basic.c
#include <stdio.h>

int main(void)
{
    int i;
    for (i = 1; i <= 3; i++) {
        printf("%d回目\n", i);
    }
    return 0;
}
1回目
2回目
3回目

13-2 よく使うパターン

合計の計算

13_02_sum.c
#include <stdio.h>

int main(void)
{
    int i, sum = 0;
    for (i = 1; i <= 10; i++) {
        sum += i;
    }
    printf("1〜10の合計 = %d\n", sum);
    return 0;
}
1〜10の合計 = 55

奇数だけ表示

13_03_odd.c
#include <stdio.h>

int main(void)
{
    int i;
    for (i = 1; i <= 10; i++) {
        if (i % 2 != 0) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}
1 3 5 7 9

13-3 ネストした for 文(二重ループ)

for 文の中に for 文を書くことができる。
外側のループが1回進むたびに、内側のループが最初からすべて実行される。

13_04_nested.c
#include <stdio.h>

int main(void)
{
    int i, j;
    for (i = 1; i <= 2; i++) {
        for (j = 1; j <= 3; j++) {
            printf("(%d, %d)\n", i, j);
        }
    }
    return 0;
}
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
✅ 外側のループが i = 1 のとき内側が j = 1, 2, 3 と全部回る。
合計 2 × 3 = 6回実行される。九九の表など「縦×横」の処理に使う。

13-4 演習

📝 演習① 1〜10の合計(scanf で N を受け取る版)

整数 N を入力して、1 から N までの合計を表示するプログラムを作れ。

13_05_sumToN.c
#include <stdio.h>

int main(void)
{
    int n, i, sum = 0;
    printf("N を入力してください: ");
    scanf("%d", &n);

    /* ここに for 文を書く */

    printf("1〜%d の合計 = %d\n", n, sum);
    return 0;
}
答えの例を表示
    for (i = 1; i <= n; i++) {
        sum += i;
    }
📝 演習② 九九の2の段

「2 × 1 = 2」〜「2 × 9 = 18」を表示するプログラムを作れ。

13_06_kuku2.c
#include <stdio.h>

int main(void)
{
    int i;

    /* ここに for 文を書く */

    return 0;
}
答えの例を表示
#include <stdio.h>

int main(void)
{
    int i;
    for (i = 1; i <= 9; i++) {
        printf("2 × %d = %d\n", i, 2 * i);
    }
    return 0;
}
📝 演習③ 九九の全段(二重ループ)

1の段〜9の段の九九を全部表示するプログラムを作れ。
表示形式:3 × 4 = 12

13_07_kukuAll.c
#include <stdio.h>

int main(void)
{
    int i, j;

    /* ここに二重 for 文を書く */

    return 0;
}
答えの例を表示
#include <stdio.h>

int main(void)
{
    int i, j;
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%d × %d = %d\n", i, j, i * j);
        }
    }
    return 0;
}

13-5 理解度チェック

Q1. 次のコードで「Hello」が出力される回数はどれか。

int i;
for (i = 0; i < 3; i++) {
    printf("Hello\n");
}
解説を表示

正解:ウ

i = 0, 1, 2 の3回、条件 i < 3 が真になる。

Q2. 次のコードの出力として正しいものはどれか。

int i;
for (i = 10; i < 3; i++) {
    printf("%d\n", i);
}
解説を表示

正解:エ

初期値 i = 10 の時点で条件 i < 3 が偽なので、1回も実行されない。

Q3. 次の二重ループで出力される行数はどれか。

int i, j;
for (i = 1; i <= 3; i++) {
    for (j = 1; j <= 4; j++) {
        printf("(%d,%d)\n", i, j);
    }
}
解説を表示

正解:ウ

外側3回 × 内側4回 = 12回出力される。

Q4. for 文と while 文の説明として正しいものはどれか。

解説を表示

正解:イ

for 文は while 文の定番パターン(初期化・条件・更新)を1行にまとめた書き方。速度差はなく、できることも同じ。