- ベストアンサー
swich文その2
最後の文の”運動種目番号が間違っています。” を表示させたいのですが、二つ目のprintfを表示させずにその文を表示させたいんです。 何度もすみません。 よろしくお願いします。 {int a, b; printf("運動種目 ;",a); scanf("%d", &a); printf("運動時間(分);",b); scanf("%d", &b); switch (a) { case '1': printf("消費カロリーは%5.2f(KCal)です。",b*8.60); break; case '2': printf("消費カロリーは%5.2f(KCal)です。",b*6.25); break; case '3': printf("消費カロリーは%5.2f(KCal)です。",b*4.41); break; case '4': printf("消費カロリーは%5.2f(KCal)です。",b*2.25); break; dafault: printf("運動種目番号が間違っています。"); break; } return 0; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この質問C/C++向けじゃないのかなぁってのはさておいて。 そもそもこのコードだとちゃんと1~4を入れてもdefaultに落ちるような気が。 前回も指摘されてたようだけどクォートしちゃいかんです。 http://okwave.jp/qa4979372.html scanf()で運動種目を取った直後で判定を入れればいいです。 必然的にaの値チェックになるので結果としてswitchのdefault:が不要になります。 「どんな判定か」は敢えて書きません。switch(a)がどんな場合にdefaultに落ちるかを考えればすぐにわかるはずです。 >#2 ネタかもしれませんがそれじゃマトモに動きませんよ。 aの入力どこでやってるんですか……
その他の回答 (2)
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 こんな感じかな。 { int a, b; if (a <'1' || a >'4') { printf("運動種目番号が間違っています。"); }else{ printf("運動種目 ;",a); scanf("%d", &a); printf("運動時間(分);",b); scanf("%d", &b); Switch (a) { case '1': printf("消費カロリーは%5.2f(KCal)です。",b*8.60); break; case '2': printf("消費カロリーは%5.2f(KCal)です。",b*6.25); break; case '3': printf("消費カロリーは%5.2f(KCal)です。",b*4.41); break; case '4': printf("消費カロリーは%5.2f(KCal)です。",b*2.25); break; } } return 0; }
- koko_u_u
- ベストアンサー率18% (216/1139)
>二つ目のprintfを表示させずにその文を表示させたいんです。 じゃあ、a の値の妥当性チェックをその「二つ目の printf」の前に行えばよいのでは?
お礼
具体的に、どこにどの文をもってこればよいのでしょうか。
お礼
前回の文章を使ったので、間違えだらけだたと思います。 時間はかかりましたが、ちゃんと動くようになりました。 ありがとうございました。