• ベストアンサー

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; }

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

この質問C/C++向けじゃないのかなぁってのはさておいて。 そもそもこのコードだとちゃんと1~4を入れてもdefaultに落ちるような気が。 前回も指摘されてたようだけどクォートしちゃいかんです。 http://okwave.jp/qa4979372.html scanf()で運動種目を取った直後で判定を入れればいいです。 必然的にaの値チェックになるので結果としてswitchのdefault:が不要になります。 「どんな判定か」は敢えて書きません。switch(a)がどんな場合にdefaultに落ちるかを考えればすぐにわかるはずです。 >#2 ネタかもしれませんがそれじゃマトモに動きませんよ。 aの入力どこでやってるんですか……

tonyemly
質問者

お礼

前回の文章を使ったので、間違えだらけだたと思います。 時間はかかりましたが、ちゃんと動くようになりました。 ありがとうございました。

その他の回答 (2)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

こんにちは。 こんな感じかな。 {   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)
回答No.1

>二つ目のprintfを表示させずにその文を表示させたいんです。 じゃあ、a の値の妥当性チェックをその「二つ目の printf」の前に行えばよいのでは?

tonyemly
質問者

お礼

具体的に、どこにどの文をもってこればよいのでしょうか。

関連するQ&A

専門家に質問してみよう