【C言語】第2章第1回:条件分岐:if文の使い方
条件分岐は、プログラムの制御フローを変化させるための基本的な構造です。この章では、C言語のif
文を用いた条件分岐の使い方を解説し、実用的な例を通じてその重要性を学びます。
1. if文とは?
if
文は、指定された条件が真(true
)の場合に特定の処理を実行するための制御構文です。
基本構文
if (条件式) {
// 条件が真の場合に実行される処理
}
この構文では、条件式が真の場合にのみ、中括弧内のコードが実行されます。
2. if文の基本例
以下のプログラムは、入力された数が正の数であるかどうかを判定します。
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number); // ユーザーから数値を入力
// if文を使用して条件を判定
if (number > 0) {
printf("The number is positive.\n"); // 条件が真の場合に実行
}
return 0;
}
解説:
number > 0
:入力された数が0より大きいかを判定。- 条件が真の場合、
"The number is positive."
が出力されます。 - 条件が偽の場合、何も実行されません。
3. else文の追加
if
文にelse
文を追加することで、条件が偽の場合の処理を記述できます。
例:正負の判定
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
// if-else文を使用して条件を判定
if (number > 0) {
printf("The number is positive.\n");
} else {
printf("The number is not positive.\n");
}
return 0;
}
解説:条件が真の場合は"The number is positive."
を出力し、偽の場合は"The number is not positive."
を出力します。
4. 複数の条件を判定するif-else if-else構造
if
–else if
–else
構造を使用することで、複数の条件を判定できます。
例:数値が正、負、ゼロのいずれであるかを判定
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
// if-else if-else文を使用
if (number > 0) {
printf("The number is positive.\n");
} else if (number < 0) {
printf("The number is negative.\n");
} else {
printf("The number is zero.\n");
}
return 0;
}
解説:
number > 0
:正の数の場合に実行。number < 0
:負の数の場合に実行。- それ以外の場合、つまり
number == 0
の場合に最後のelse
が実行されます。
5. 複数の条件を組み合わせる
論理演算子(&&
、||
)を使用して複数の条件を組み合わせることができます。
例:数が0以上かつ偶数であるかを判定
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
if (number >= 0 && number % 2 == 0) {
printf("The number is non-negative and even.\n");
} else {
printf("The number does not meet the criteria.\n");
}
return 0;
}
このプログラムでは、数が0以上かつ偶数であるかどうかを判定します。
6. 練習問題
以下の課題に挑戦し、if
文の使い方を練習してください。
- 入力された数が10以上であれば「大きい」、10未満であれば「小さい」と表示するプログラムを作成してください。
- 入力された数が3の倍数であるかを判定するプログラムを書いてください。
- 2つの数を入力し、それらが等しいか、どちらが大きいかを判定するプログラムを作成してください。
7. 練習問題の解答と解説
問1の解答
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
if (number >= 10) {
printf("The number is large.\n");
} else {
printf("The number is small.\n");
}
return 0;
}
問2の解答
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
if (number % 3 == 0) {
printf("The number is a multiple of 3.\n");
} else {
printf("The number is not a multiple of 3.\n");
}
return 0;
}
問3の解答
#include <stdio.h>
int main() {
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
if (a == b) {
printf("The numbers are equal.\n");
} else if (a > b) {
printf("The first number is larger.\n");
} else {
printf("The second number is larger.\n");
}
return 0;
}
8. まとめ
条件分岐は、プログラムの動作を柔軟にするための重要な仕組みです。if
文を使いこなすことで、状況に応じた処理を実装できるようになります。今回学んだ内容を実際のプログラムに応用してみましょう!