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