スポンサーリンク

else・if・switch多方向分岐とcase・breakの使い方

else if 多方向分岐させる

【 if 】 条件にあった場合は実行 【 else 】それ以外なら実行を勉強してみました。今回はさらに実行条件を増やす【 else if 】を使って勉強してみたいと思います。

配列に代入された文字列終端マークで判定させています。もしなにも入力されない場合は 変数【 ss0 】には0が文字列終端マークとして代入されるので【 if 】を実行 一文字代入された場合は変数【 ss1 】に0が文字終端マークとして代入される為【 else if 】を実行すると言う形になります。
※配列:ss[10]を宣言すると、変数ssをss0~ss9まで用意してくれます。文字終端マーク【 0 】は文字入力の最後に必ず自動的に代入される数字になります。
ss[10] を宣言すると以下のように変数が作成されます。例えば ABと入力すると【ss2】には文字列終端マーク0が入ります。
※ss[10]を個別に指定(記述)する場合は、ss[0]、ss[1]、ss[2]・・・ss[9]を記述します。

ss0 ss1 ss2 ss3 ss4 ss5 ss6 ss7 ss8 ss9
A B 0
この部分をifで判定
#include <stdio.h>

int main (void)
{
char ss[10];
printf(“9文字以内で文字を入力して下さい”);
gets (ss);

if(ss[0] == 0){
printf(“0文字です\n”);
}

else if(ss[1] == 0){
printf(“1文字です\n”);
}

else if(ss[2] == 0){
printf(“2文字です\n”);
}

else{
printf(“二文字以上です\n”);
}

return 0;
}

解説 【 else if 】は増やしてもOKです。例 【 else if{ (ss[3] == 0) printf(“三文字です\n”);} 】コツを掴んでみて下さいね。

実行結果

0~32768乱数を発生させる数学関数を使い6の剰余求めるサンプル

【 rand 】0~32768乱数を発生させる数学関数を使い、6の剰余(割った余り)を求めさせます。すると0~5をランダムに出力させる事が可能になります。それをさいころ風にさせる為、+1としています。
※浮動小数点を入力すると、何故か暴走してしまいます。サンプルとしてだけ見て下さいね。尚暴走した場合は「ctrl」+「c」キーで停止可能です。

#include <stdio.h>
#include <stdlib.h>int main(void)
{
int a,sai;
a = -1;while(a != 0){
printf(“0入力で停止します。予想?”);
scanf(“%d”,&a);
sai = rand()%6+1;
printf(“サイコロの目は%d\n”,sai);
if(a == sai){
printf(“大当たり\n”);
}
else if(a >= 7){
printf(“1~6です\n”);
}else{
printf(“大はずれ\n”);
}
}return 0;
}

ソースの解説
【 While 】ループをしようし、変数【 a 】に0を入力すると停止するように、してます。
その間は乱数を発生させると言う条件です。単純に1~6を出力させても面白みがないので、【 if 】【 else if 】【 else 】でそれぞれの条件にあった文章を出力させるようにしています。
※【 rand 】に付いては後日詳しくいっしょに勉強してみたいと思います。

実行結果

switch多方向分岐

【 switch 】は整数値のもとづいて多方向分岐をさせるものです。
【 if 】の場合はもしなになにならに条件が当てはまる場合は実行するのに対して【 switch 】の場合この中のどれかの条件を実行すると言う使い方をします。また条件の判定には整数値を結果とする式を使います。
※switchを使用する場合 実数型変数宣言【 float 】や【 double 】は使用できません。【 char 】に付いては、文字は文字コードとして扱う事が可能なので使用することができます。

【 switch 】を使用したサンプルソースです。

#include <stdio.h>

int main(void)
{
int a;

for(a=1; a<=5; a++){
printf(“分岐条件%d\n”,a);

switch(a){
case 1:
printf(“%d\n\n”,a);
break;

case 3:
printf(“%d\n\n”,a);
break;

default:
printf(“その他\n\n”);
}

}
return 0;

}

解説 【 for(a=1; a<=5; a++) 】を使い、5回ループさせます。変数aは1~5までの整数を出力し、
【 printf(“分岐条件%d\n”,a) 】にて5回 分岐条件1~5までを出力します。
さらにその条件に今回勉強する【 switch 】を付け加え、変数aが出力する整数に対し
【 case ~: 】(最後の記号はコロンです、セミコロンではありません) にて条件を設定します。
例えば【 case 2: 】と条件を記述すれば、変数aが2回目のループの時に実行するという事になります。
【 default: 】は当てはまる条件の無い場合に実行します。
【 break; 】は実行して終了という意味です。 ただ最後の条件(上記の場合はbreak:)には【 break; 】
を記述する必要はありません。

実行結果です。
条件実行時の出力されている数字は ループの際、変数aに代入される数字を出力しています。

switchを使い文字列を使用したサンプルコード

【 switch 】についてもう少し勉強してみましょう。今回は簡単に文字列を使用してのサンプルです。

#include <stdio.h>

int main(void)
{
char ss[80];

printf(“実行しますか?(Y/N:)”);
gets(ss);

switch(ss[0]){
case ‘Y’:
printf(“実行されました\n”);
break;

case ‘N’:
printf(“中止しました\n”);
break;

default:
printf(“入力ミスです\n”);
}
return 0;
}

解説 文字列配列を79文字分作成し(※文字列終端にはかならず0が入りますのでss[80]とした場合は最大入文字数は79文字)、最初に入力される文字列【 ss[0] 】に入力された文字を【 switch 】で他方向分岐させています。もし万が一(Y)又は(N)以外の判定できない文字列が入力された場合は【 defalt 】処理しています。

実行結果。

コメント

タイトルとURLをコピーしました