09_if文演習問題

■ 概要

この資料では、C言語の if 文を使った実践的な演習問題を優しいものから難しいものへ段階的に掲載しています。 最初は単純な条件分岐から始め、後半ではネストや複数条件、論理演算子を含む応用問題まで扱います。


■ 問題1:正負の判定(09-1_pos_neg.c

整数を入力させ、以下のように判定するプログラムを作成してください。 - 0より大きい → 「正の数」 - 0より小さい → 「負の数」 - 0 → 「ゼロ」

正解例と解説

#include <stdio.h>
int main(void) {
    int n;
    printf("整数を入力してください: ");
    scanf("%d", &n);

    if (n > 0) {
        printf("正の数\n");
    } else if (n < 0) {
        printf("負の数\n");
    } else {
        printf("ゼロ\n");
    }
    return 0;
}


■ 問題2:偶数・奇数の判定(09-2_even_odd.c

整数を入力し、偶数か奇数かを判定して表示してください。

正解例と解説

#include <stdio.h>
int main(void) {
    int x;
    printf("整数を入力してください: ");
    scanf("%d", &x);

    if (x % 2 == 0) {
        printf("偶数です\n");
    } else {
        printf("奇数です\n");
    }
    return 0;
}


■ 問題3:最大値の判定(09-3_max_of_two.c

2つの整数を入力し、大きい方を表示してください。同じ場合は「同じ値です」と表示。

正解例と解説

#include <stdio.h>
int main(void) {
    int a, b;
    printf("2つの整数を入力してください: ");
    scanf("%d %d", &a, &b);

    if (a > b) {
        printf("大きいのは %d\n", a);
    } else if (a < b) {
        printf("大きいのは %d\n", b);
    } else {
        printf("同じ値です\n");
    }
    return 0;
}


■ 問題4:割り算の安全確認(09-4_safe_div.c

0除算を避けて安全に割り算をするプログラムを作ってください。

正解例と解説

#include <stdio.h>
int main(void) {
    int a, b;
    printf("割られる数と割る数を入力してください: ");
    scanf("%d %d", &a, &b);

    if (b == 0) {
        printf("0で割れません\n");
    } else {
        printf("結果: %d\n", a / b);
    }
    return 0;
}


■ 問題5:映画のチケット料金(09-5_ticket_price.c

年齢によってチケット料金の区分を表示するプログラムを作ってください。

正解例と解説

#include <stdio.h>
int main(void) {
    int age;
    printf("年齢を入力してください: ");
    scanf("%d", &age);

    if (age <= 12) {
        printf("子ども料金\n");
    } else if (age <= 64) {
        printf("大人料金\n");
    } else {
        printf("シニア料金\n");
    }
    return 0;
}


■ 問題6:3の倍数かつ5の倍数(09-6_multiple_nested.c

3と5の倍数かどうかを段階的に判定し、メッセージを表示してください。

ヒント 3の倍数かを先に調べてから、5の倍数かをネストしたifで判定しましょう。

正解例と解説

#include <stdio.h>
int main(void) {
    int num;
    printf("整数を入力してください: ");
    scanf("%d", &num);

    if (num % 3 == 0) {
        if (num % 5 == 0) {
            printf("3と5の倍数です\n");
        } else {
            printf("3の倍数ですが5の倍数ではありません\n");
        }
    } else {
        printf("3の倍数ではありません\n");
    }
    return 0;
}


■ 問題7:成績による評価(09-7_score_eval.c

得点に応じて評価を段階的に分けて表示するプログラムを作成してください。

ヒント ネストされたif文を使い、得点の範囲ごとに分けて考えましょう。

正解例と解説

#include <stdio.h>
int main(void) {
    int score;
    printf("点数を入力してください: ");
    scanf("%d", &score);

    if (score >= 60) {
        if (score >= 80) {
            if (score >= 90) {
                printf("とてもよくできました\n");
            } else {
                printf("よくできました\n");
            }
        } else {
            printf("合格\n");
        }
    } else {
        printf("不合格\n");
    }
    return 0;
}


■ 問題8:身長と年齢で条件判定(09-8_height_age.c

身長と年齢を入力し、以下のように判定するプログラムを作成してください。 - 年齢が12歳以上 かつ 身長が140cm以上 → 「乗車可能」 - 上記以外 → 「乗車できません」

ヒント 2つの条件を同時に満たす必要があるときは、論理演算子 && を使います。

正解例と解説

#include <stdio.h>
int main(void) {
    int age, height;
    printf("年齢と身長を入力してください(例: 12 145): ");
    scanf("%d %d", &age, &height);

    if (age >= 12 && height >= 140) {
        printf("乗車可能\n");
    } else {
        printf("乗車できません\n");
    }
    return 0;
}


■ 問題9:文字入力のチェック(09-9_char_check.c

1文字を入力し、それがアルファベットの大文字なら「大文字」、小文字なら「小文字」、数字なら「数字」、その他は「その他」と表示するプログラムを作成してください。

ヒント 文字コードの範囲('A'〜'Z' や 'a'〜'z')を使って比較します。

正解例と解説

#include <stdio.h>
int main(void) {
    char c;
    printf("1文字を入力してください: ");
    scanf(" %c", &c);

    if (c >= 'A' && c <= 'Z') {
        printf("大文字\n");
    } else if (c >= 'a' && c <= 'z') {
        printf("小文字\n");
    } else if (c >= '0' && c <= '9') {
        printf("数字\n");
    } else {
        printf("その他\n");
    }
    return 0;
}


■ 問題10:ユーザー入力の正当性チェック(09-10_input_validate.c

0〜100の整数を入力させ、不正な入力(範囲外)だった場合は「無効な値です」と表示してください。それ以外は「入力値は ○○ です」と表示。

ヒント 不正条件は x < 0 || x > 100 で表現できます。

正解例と解説

#include <stdio.h>
int main(void) {
    int value;
    printf("0〜100の整数を入力してください: ");
    scanf("%d", &value);

    if (value < 0 || value > 100) {
        printf("無効な値です\n");
    } else {
        printf("入力値は %d です\n", value);
    }
    return 0;
}