【C言語】第2章第4回:switch文の活用とその利点
switch
文は、複数の条件を効率的に処理するための構文です。この章では、switch
文の基本構造と利点を学び、実用的なプログラム例を通じてその使い方を理解します。
1. switch文とは?

switch
文は、1つの変数の値を基に複数の条件を簡潔に処理するための構文です。
基本構文
switch (式) {
case 値1:
// 値1の場合の処理
break;
case 値2:
// 値2の場合の処理
break;
default:
// どのケースにも該当しない場合の処理
}
特徴:
switch
文は整数型または文字型の値を比較対象に使用します。break
ステートメントを使うことで処理を終了します。default
は任意ですが、設定しておくとどのケースにも該当しない場合の処理を記述できます。
2. switch文の基本例

以下のプログラムは、数字を入力し、それに対応する曜日を出力します。
#include <stdio.h>
int main() {
int day;
printf("Enter a number (1-7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Invalid input. Please enter a number between 1 and 7.\n");
}
return 0;
}
解説:
- ユーザー入力に応じて対応する曜日を出力します。
default
ケースで、無効な入力に対するメッセージを表示します。break
がない場合、次のケースの処理も続けて実行されるので注意が必要です。
3. breakを忘れた場合の動作

break
を忘れると、次のケースに処理が進んでしまうことがあります。
例:breakなしのswitch文
#include <stdio.h>
int main() {
int number;
printf("Enter a number (1-3): ");
scanf("%d", &number);
switch (number) {
case 1:
printf("One\n");
case 2:
printf("Two\n");
case 3:
printf("Three\n");
default:
printf("Invalid input.\n");
}
return 0;
}
解説:たとえばnumber == 1
の場合、"One"
、"Two"
、"Three"
がすべて出力されます。
4. switch文の利点
switch
文の主な利点は以下の通りです:
- 読みやすさ:複数の
if
–else if
構造よりも簡潔に記述できます。 - 効率性:
switch
文は、条件が多い場合にパフォーマンスが向上することがあります。
5. 練習問題
以下の課題に挑戦して、switch
文の使い方を練習してください。
- 1〜12の数値を入力し、対応する月の名前を出力するプログラムを作成してください。
- 入力された文字(
'a'
,'b'
,'c'
)に応じて異なるメッセージを出力するプログラムを作成してください。 - 商品のコード(1〜5)を入力し、対応する商品の価格を出力するプログラムを作成してください。
6. 練習問題の解答と解説
問1の解答
#include <stdio.h>
int main() {
int month;
printf("Enter a number (1-12): ");
scanf("%d", &month);
switch (month) {
case 1:
printf("January\n");
break;
case 2:
printf("February\n");
break;
case 3:
printf("March\n");
break;
case 4:
printf("April\n");
break;
case 5:
printf("May\n");
break;
case 6:
printf("June\n");
break;
case 7:
printf("July\n");
break;
case 8:
printf("August\n");
break;
case 9:
printf("September\n");
break;
case 10:
printf("October\n");
break;
case 11:
printf("November\n");
break;
case 12:
printf("December\n");
break;
default:
printf("Invalid input. Please enter a number between 1 and 12.\n");
}
return 0;
}
問2の解答
#include <stdio.h>
int main() {
char option;
printf("Enter a character (a, b, c): ");
scanf(" %c", &option);
switch (option) {
case 'a':
printf("You chose option A.\n");
break;
case 'b':
printf("You chose option B.\n");
break;
case 'c':
printf("You chose option C.\n");
break;
default:
printf("Invalid option.\n");
}
return 0;
}
問3の解答
#include <stdio.h>
int main() {
int productCode;
printf("Enter the product code (1-5): ");
scanf("%d", &productCode);
switch (productCode) {
case 1:
printf("Product 1: $10\n");
break;
case 2:
printf("Product 2: $15\n");
break;
case 3:
printf("Product 3: $20\n");
break;
case 4:
printf("Product 4: $25\n");
break;
case 5:
printf("Product 5: $30\n");
break;
default:
printf("Invalid product code.\n");
}
return 0;
}
7. まとめ
switch
文は、複数の条件を効率的に処理するための便利なツールです。条件が多いときは、適切に使いましょう!