-1

ここでは、C言語でswitchコマンドとifコマンドを体験したところです。ifコマンドはコメントで省略し、switchコマンドを使って同じコマンドを書きました。しかし、私が指示したとおりに機能するようになりました。私はどこを間違えたのですか?私は学習者なので、私の間違いを許してください..

 #include <stdio.h>
    #include<stdlib.h>
    int main()
    {
        char card_name[3];
        puts("enter the card name: ");
        scanf("%2s", card_name);
        /*int val=0;
        if (card_name[0]=='K') {
            val=10;
        } else if (card_name[0]=='Q'){
            val=10;
        } else if (card_name[0]=='J'){
            val=10;
        } else if (card_name[0]=='A'){
            val=11;
        }else{
            val=atoi(card_name);
        }*/
        int val=0;
        switch (card_name[0]) {
            case 'K':
            case 'Q':
            case 'J':
            val=10;
            break;
            case 'A':
            val=11;
            default:
            val=atoi(card_name);
            break;
        }
        if (val>2 && val<7) {
            puts("the count has gone up!");
        } else if(val>=10){
            puts("The count has gone down");
        }
        return 0;
    }
4

3 に答える 3

2

'A'ケースに別の休憩がありません。次に、switch ステートメントは次のようになります (インデントを追加しました)。

switch (card_name[0]) {
    case 'K':
    case 'Q':
    case 'J':
        val=10;
        break;
    case 'A':
        val=11;
        break; // you were missing a break statement here
    default:
        val=atoi(card_name);
        break;
}
于 2013-11-03T00:38:51.193 に答える
1

ありません..それは意図的break;case 'A'ものですか?

于 2013-11-03T00:39:16.020 に答える
1

デフォルト ラベルの前に、case 'A':, の break ステートメントがありません。特定のケースだけでなく、他のケースを実行することが意図されていない限り、case ステートメント内の各ステートメントの後でブレークする必要があります。

于 2013-11-03T00:39:36.630 に答える