dポイントプレゼントキャンペーン実施中!

C言語のswitch case文で、scanfでキーボードから読み込んだ1~12の値によって画面に季節を、3~5は"春"、6~8は"夏"・・・というふうに表示させるプログラムなのですが、if文を使わずにswitch caseで作るには
case 3:
case 4:
case 5:puts("春"); break;



と1個1個記述するしかないのでしょうか?
もし比較演算子と論理演算子を使って 3<= && <=5 こんな感じに1行にまとめることができるなら教えてください。

A 回答 (5件)

あきらめてください.

    • good
    • 0

どうして一行にまとめたいのでしょうか?


「一行にまとめる」ことが目的ならば、

case 3:case 4:case 5:puts("春"); break;

と書けばOKですけど。
    • good
    • 0

switch case文だったらまとめられますよ。


case 3,4,5:
puts("春\n");
break;
case 6,7,8:
puts("夏\n");
break;
・・・

これでどう?
    • good
    • 0

無理せずに、ifでいいんじゃないの?



>if文を使わずにswitch caseで作る

それが・・・そもそも間違いなんです

VBじゃないんですから ねぇ???
    • good
    • 0

出来ません。


switch~case文の caseラベルの値は必ず定数値でなければなりません。

複数のcaseラベルを並べるのが嫌なら、switch~case文の前段階で値をまとめ、その値で分岐処理を行う必要があります。

int season;

season = month / 3;
if (season == 4) season = 0;

switch (season) {
case 0: puts("冬"); break;
case 1: puts("春"); break;
case 2: puts("夏"); break;
case 3: puts("秋"); break;
}

もっとも、こんなのswitch~caseを使うよりも

char *kisetsu[] = {"冬", "春", "夏", "秋"};
puts(kisetsu[season]);

の方が現実的だけど……
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!