最後の文の”運動種目番号が間違っています。”
を表示させたいのですが、二つ目の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;
}

このQ&Aに関連する最新のQ&A

A 回答 (3件)

この質問C/C++向けじゃないのかなぁってのはさておいて。



そもそもこのコードだとちゃんと1~4を入れてもdefaultに落ちるような気が。
前回も指摘されてたようだけどクォートしちゃいかんです。
http://okwave.jp/qa4979372.html

scanf()で運動種目を取った直後で判定を入れればいいです。
必然的にaの値チェックになるので結果としてswitchのdefault:が不要になります。
「どんな判定か」は敢えて書きません。switch(a)がどんな場合にdefaultに落ちるかを考えればすぐにわかるはずです。

>#2
ネタかもしれませんがそれじゃマトモに動きませんよ。
aの入力どこでやってるんですか……
    • good
    • 0
この回答へのお礼

前回の文章を使ったので、間違えだらけだたと思います。

時間はかかりましたが、ちゃんと動くようになりました。
ありがとうございました。

お礼日時:2009/05/22 15:18

こんにちは。


こんな感じかな。

{
  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;
}
    • good
    • 0

>二つ目のprintfを表示させずにその文を表示させたいんです。



じゃあ、a の値の妥当性チェックをその「二つ目の printf」の前に行えばよいのでは?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/22 10:51

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


人気Q&Aランキング

おすすめ情報