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

締切り済みの質問

教えてください!!

このソースを実行しても、1~4を選んでも足し算になってしまいます。どこが違っているか、教えてください。
int main(void)
{
int na, nb, nc;
printf("二つの整数の演算を行います。\n");
printf("二つの整数を入力してください\n");

printf("整数A"); scanf("%d", &na);
printf("整数B"); scanf("%d", &nb);

printf("1:加算\n2:減算\n3:乗算\n4:除算\n");
printf("1~4のどれかを入力してください。");
scanf("%d", &nc);

switch(nc) {
case1: printf("%d + %dは、%dです。\n", na, nb, na + nb); break;
case2: printf("%d - %dは、%dです。\n", na, nb, na - nb); break;
case3: printf("%d * %dは、%dです。\n", na, nb, na * nb); break;
case4: printf("%d / %dは、%dです。\n", na, nb, na / nb); break;
default: printf("%dは番号が違います。\n");
}

return(0);
}

投稿日時 - 2005-09-10 21:40:48

QNo.1640779

すぐに回答ほしいです

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

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

回答(3)

ANo.3

>必ずprintf("%dは番号が違います。\n");が実行されるはずですが?
>>1~4を選んでも足し算になってしまいます
>ほんとに足し算していますか?
bcc32でそのままコンパイルした場合、
case1: printf("%d + %dは、%dです。\n", na, nb, na + nb); break;
が実行される結果となりました。

>どこが違っているか、教えてください。
他の方も指摘しているとおり、
case 1:
のようにcaseの後にスペースが必要です

投稿日時 - 2005-09-11 02:12:06

ANo.2

No.1の方と同じですが、caseの後にスペースが無いため、case1からcase4までgoto文用のラベルになっています。
caseラベルが無く、defaultラベルのみ生きています。
ですから、必ずprintf("%dは番号が違います。\n");が実行されるはずですが?

>1~4を選んでも足し算になってしまいます
ほんとに足し算していますか?

投稿日時 - 2005-09-10 23:33:23

ANo.1

case の直後、少なくとも一個の空白がありますか?
case1: ではなく case 1: となっていますか?

投稿日時 - 2005-09-10 21:55:58

あなたにオススメの質問