swich文が反映できません。
scanfまではできました。
どこがおかしいか教えてください。
{
int a, b;
printf("運動種目 ;",a);
scanf("%a", &a);
printf("運動時間(分);",b);
scanf("%b", &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 回答 (4件)

ANo.3ですが、訂正です。



(誤) %aと%bは変数名ではなく、書式の指定です。
(正) scanfの左側の引数(""で囲まれた部分)は変数名でなく、書式の指定です。

失礼しました。
    • good
    • 0

C言語の話ですか?



> printf("運動種目 ;",a);
> scanf("%a", &a);
> printf("運動時間(分);",b);
> scanf("%b", &b);

scanf文の%aと%bが誤りだと思います。
%aと%bは変数名ではなく、書式の指定です。
例えばscanf関数では%dや%sをよく用いますが、
"%d"は「変数に整数値を格納」という命令、
"%s"は「文字列を格納」という命令だと思って下さい。
例えば変数a、bに整数を格納したいなら次のようになります。

printf("運動種目 ;");
scanf("%d", &a); /* 変数はaでも、"%d" */
printf("運動時間(分);");
scanf("%d", &b); /* 変数はbでも、"%d" */

このように修正した場合、switch文のcaseラベルも変更する必要があります。
ANo.1の方が仰る通り、「case '1':」ではなく「case 1:」とします。
    • good
    • 0
この回答へのお礼

うまいこといきました。
以後気を付けます:)
ありがとうございました。

お礼日時:2009/05/22 00:52

一つ思ったのですが、scanf文がおかしくありませんか?


int型であれば「scanf("%d", &a);」と記述しますが・・・、「%a」というのは、というのがおかしいのではないですか?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2009/05/22 00:53

aをint型で宣言しているのであれば、「'1'」だとおかしいです。


「case 1:」と記述すればできると思います。

参考URL:http://www9.plala.or.jp/sgwr-t/c/sec06-5.html
    • good
    • 0
この回答へのお礼

返答ありがとうございます。
やってみたところダメでした。

お礼日時:2009/05/22 00:17

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


人気Q&Aランキング