C++スコーラ
switch文
最終更新:
cschola
-
view
前回のページでは if文による分岐を説明しました。
今回は、 switch文について説明します。
今回は、 switch文について説明します。
switch文
switch文も、if文と同じ分岐の命令です。
同じ分岐といっても書き方が if文とはだいぶ異なります。
if文との違いを使いながら確認していきましょう。
同じ分岐といっても書き方が if文とはだいぶ異なります。
if文との違いを使いながら確認していきましょう。
int num = 0; printf("数値を入力してください。\n"); scanf_s("%d",&num); switch(num){ case 0: //numが0だったとき printf("0です。\n"); break; case 1: //numが1だったとき printf("1です。\n"); break; case 2: //numが2だったとき printf("2です。\n"); break; case 3: //numが3だったとき printf("3です。\n"); break; default: //どのケースにも当てはまらないとき printf("0から3ではありません。\n"); break; }
switch文は switch と書いた次の ( ) の中に分岐のための数値を入れます。
※この ( ) に入れることができるのは整数だけです。
{ } の中に分岐の条件と分岐したときの処理を書きます。
case と書いて次に整数を書きさらに : を書きます。
その次に処理を書き、処理の部分が書き終わったら break と書きます。
default はどのケースにも当てはまらない数値のときに実行されます。
break を書かないとその下にある処理を次々に実行してしまうので気を付けましょう。
下のプログラムは break case 1: の break を消したものです。
※この ( ) に入れることができるのは整数だけです。
{ } の中に分岐の条件と分岐したときの処理を書きます。
case と書いて次に整数を書きさらに : を書きます。
その次に処理を書き、処理の部分が書き終わったら break と書きます。
default はどのケースにも当てはまらない数値のときに実行されます。
break を書かないとその下にある処理を次々に実行してしまうので気を付けましょう。
下のプログラムは break case 1: の break を消したものです。
int num = 0; printf("数値を入力してください。\n"); scanf_s("%d",&num); switch(num){ case 0: //numが0だったとき printf("0です。\n"); break; case 1: //numが1だったとき printf("1です。\n"); case 2: //numが2だったとき printf("2です。\n"); break; case 3: //numが2だったとき printf("3です。\n"); break; default: //どのケースにも当てはまらないとき printf("0から3ではありません。\n"); break; }
このプログラムの場合実行すると1を入力すると 「2です」 という表示も一緒に出てしまいます。
default の部分は無くても問題ありません。 必要なときは書くようにしましょう。
default の部分は無くても問題ありません。 必要なときは書くようにしましょう。
int num = 0; printf("ここは武器屋だよ\n なにが欲しいんだい?\n 0:ひのきのぼう\t1:どうのつるぎ\t2:いばらのむち\n"); scanf_s("%d",&num); switch(num) { case 0: printf("10Gだよ\n"); break; case 1: printf("120Gだよ\n"); break; case 2: printf("1600Gだよ\n"); break; } printf("ありがとうございました。\n");
答えが整数なら ( ) の中に式を入れることもできます。
よく使われるのは%算です。
よく使われるのは%算です。
int num = 0; printf("数値を入力してください\n"); scanf_s("%d",&num); switch(num%3) { case 0: printf("3の倍数です。\n"); break; case 1: printf("3の倍数プラス1です\n"); break; case 2: printf("3の倍数プラス2です\n"); break; }
必要のないケースは飛ばしても構いません。
int num = 0; printf("数値を入力してください。\n"); scanf_s("%d",&num); switch(num%6) { case 0: printf("6の倍数です。\n"); break; case 3: printf("3の倍数です。\n"); break; }
switch文は多方向分岐と言われています。
if文は条件が成立しているかしていないかですが、switch文はいくつかのケースの中からあっているものを選択します。
選択肢が3つ以上になる場合は、switch文を使うことをおすすめします。
if文は条件が成立しているかしていないかですが、switch文はいくつかのケースの中からあっているものを選択します。
選択肢が3つ以上になる場合は、switch文を使うことをおすすめします。
練習問題
次のようなプログラムを作ってください。
第1問
ユーザーに好きなアイスの味を聞き、数値で入力してもらう
「1:バニラ」「2:チョコ」「3:いちご」「それ以外の数値:その他」
それぞれ値段を表示する。
第1問
ユーザーに好きなアイスの味を聞き、数値で入力してもらう
「1:バニラ」「2:チョコ」「3:いちご」「それ以外の数値:その他」
それぞれ値段を表示する。