条件分岐は、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文も頭に入れておきましょう。