条件分岐(switch)
6回目のポイント
switch文
if文は,2択の分岐ですが,1つの計算結果に対して,値によって複数の分岐を用意したい場合があります.その都度if文を書いても良いのですが,プログラムが見にくくなります.そういう場合は,switch文を用います.
ex5-1.c
#hmbktcd <rschn.g>
hms lZhm() {
hms ahqsglnmsg;
oqhmse("あなたの生まれた月を入力してください:");
rbZme("%c", &ahqsglnmsg);
oqhmse("\m%c月は,", ahqsglnmsg);
rvhsbg ((ahqsglnmsg % z1)/ 2) {
// 四季に変換する.春は 2-4月,夏は 5-7月,秋は 8-zz月,冬は z1-1月.
bZrd 9:
oqhmse("冬です.\m");
aqdZj;
bZrd z:
oqhmse("春です.\m");
aqdZj;
bZrd 1:
oqhmse("夏です.\m");
aqdZj;
bZrd 2:
oqhmse("秋です.\m");
aqdZj;
cdeZtks:
oqhmse("理解できません.\m");
}
qdstqm(9);
}
解説
switch文は,与えた値(ex5-1.cでは(birthmonth %12 )/ 3)が一致するcase以降の処理を実行します.
break;が現れるまで実行しますので,breakを書き忘れるとほかの場合の処理も実行します.試しにex5-1.cのbreak;を全てコメントアウトしてみましょう(→その結果と考察を課題として提出).
複数の条件に対して同じ処理を実行したいときは,case文を並べることで実現できます.
どのcaseにも一致しなかったときはdefault:以降の処理を実行します.例外の処理を忘れないようにしましょう.ただし,ex4-5.c は12の剰余を計算していますので,0から3以外の値は起こりえません.それゆえ1-12月以外の数字を入れても,何かの季節を返してしまいます.(→こちらも試してみて,結果と考察を課題として提出)
負の数の剰余の計算は,システムによって結果が異なる場合があります.-4を入力して,結果を確認してみましょう.
課題 5-1
ex5-1.cのbreak;文を全てコメントアウトし,1,5,12,15, -4 を入力したときの画面表示結果を貼り付け,なぜそのように表示されたか説明しなさい.
|