こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語のswitch case文で、scanfでキーボードから読み込ん

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行にまとめることができるなら教えてください。

投稿日時 - 2010-05-13 00:43:47

QNo.5891311

困ってます

質問者が選んだベストアンサー

あきらめてください.

投稿日時 - 2010-05-13 01:29:00

ANo.1

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

どうして一行にまとめたいのでしょうか?
「一行にまとめる」ことが目的ならば、

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

と書けばOKですけど。

投稿日時 - 2010-05-13 13:33:17

ANo.4

switch case文だったらまとめられますよ。
case 3,4,5:
puts("春\n");
break;
case 6,7,8:
puts("夏\n");
break;
・・・

これでどう?

投稿日時 - 2010-05-13 08:48:43

ANo.3

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

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

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

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

投稿日時 - 2010-05-13 01:36:48

ANo.2

出来ません。
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]);

の方が現実的だけど……

投稿日時 - 2010-05-13 01:31:40

あなたにオススメの質問