身につくC言語-7回目 条件分岐2 switch文-

条件分岐は、if文だけではありません。

 

今回使うのは、switch文です。

 

switch文の使い方

 

早速コードを入力してみましょう。

 


#include<stdio.h>

int main(void)
{
	int a;
	
	scanf("%d",&a);
	
	switch(a)
	{
		case 1:
		
			printf("1が入力されました。\n");
			break;
		
		case 2:
		
			printf("2が入力されました。\n");
			break;
		
		default:
		
			printf("1と2以外が入力されました。\n");
			break;
		
	}
	
	return 0;
}

 

見てほしいのはこの部分です。

 


	switch(a)
	{
		case 1:
		
			printf("1が入力されました。\n");
			break;
		
		case 2:
		
			printf("2が入力されました。\n");
			break;
		
		default:
		
			printf("1と2以外が入力されました。\n");
			break;
		
	}
	

まず

 

switch(a){}

 

というモノを日本語に直すと

 

変数aについて扱います

 

という意味です。

 

これは、あまり深く考えなくてもわかるでしょう。

 

()の中を取り扱います。

 

次に、

 


case 1:
	printf("1が入力されました。\n");
	break;

 

というのは、

 

要素が「1」の時に、「1が入力されました。」と出力しなさい。そしたら、switch文を抜けなさい。

 

という意味です。

 

なんとなくイメージがつかめてきたでしょうか。

 

次のcase 2:というのは

 

要素が2の時に処理をおこなうという意味です。

 

ここで要素というのは、aですね。

 


	default:

というのは、それ以外の時、という意味です。

 

if文でたとえるとelse{}と似たような感じですね。

 

ここでは、「要素が1と2以外の時」という意味です。

 

break;は大切!

 

break;

 

というものは、「ここで文から抜ける」という意味です。

 

ここでは、switch文から抜けるという意味です。

 

…わかりにくいと思いますので、こちらのコードを入力してみてください。


#include<stdio.h>

int main(void)
{
	int a;
	
	scanf("%d",&a);
	
	switch(a)
	{
		case 1:
		
			printf("1が入力\n");
			
		case 2:
		
			printf("2が入力\n");
			
		case 3:
		
			printf("3が入力\n");
			
			
	}
	
	return 0;
}

 

仮に1を入力してください。

 

すると、結果が、

 


1が入力
2が入力
3が入力

 

という風になると思います。

 

なぜこうなるかというと、「break;」が無いからです。

 

もう一つ 2 を入力してください。

 

すると、結果は、

 


2が入力
3が入力

 

となります。

 

要素(a)が、1ではないので最初のprintf();はとばして、次のcase2:から始まります。

 

ですが、「break;」が無いので、case 3:まで続いてしまいます。

 

練習問題

問題1 整数1文字を入力して、1だった場合「おはよう」を、2だった場合「こんにちは」を、3だった場合「こんばんは」を出力しなさい。

default:は使用しなくてもよい。

 

練習問題解答と解説

問題1 解答


#include<stdio.h>

int main(void)
{
	int a;
	
	scanf("%d",&a);
	
	switch(a)
	{
		case 1:
		
			printf("おはよう\n");
			break;
			
		case 2:
		
			printf("こんにちは\n");
			break;
		case 3:
		
			printf("こんばんは\n");
			break;
			
	}
	
	return 0;
}

まとめ

if文とswitch文どちらを使っても、条件分岐をすることができますが、

 

=<

 

などの比較を使いたい場合はif文のほうがいいと思います。

 

要素が、決まっていてあらかじめ「1か2か3が入力される」とわかっている状態ならば、switch文の方がわかりやすいでしょう。

 

if文を多く使用すると思いますが、switch文も頭に入れておきましょう。