Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的switch命令有什么错误?_C - Fatal编程技术网

C中的switch命令有什么错误?

C中的switch命令有什么错误?,c,C,在这里,我刚刚体验了C中的switch命令和if命令。我通过注释省略了if命令,并使用switch命令编写了相同的命令。但它现在按照我的指示工作。我哪里弄错了?由于我是一名学习者,请原谅我的错误 #include <stdio.h> #include<stdlib.h> int main() { char card_name[3]; puts("enter the card name: "); sc

在这里,我刚刚体验了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;
    }
#包括
#包括
int main()
{
char card_name[3];
放入(“输入卡名:”);
scanf(“%2s”,卡片名称);
/*int-val=0;
如果(卡片名称[0]='K'){
val=10;
}else if(卡片名称[0]='Q'){
val=10;
}else if(卡片名称[0]='J'){
val=10;
}else if(卡片名称[0]=='A'){
val=11;
}否则{
val=atoi(卡名);
}*/
int-val=0;
交换机(卡名称[0]){
案例“K”:
案例‘Q’:
案例“J”:
val=10;
打破
案例“A”:
val=11;
违约:
val=atoi(卡名);
打破
}
如果(val>2&&val=10){
看跌期权(“计数已下降”);
}
返回0;
}

您错过了
'A'
案例中的另一个中断。然后,switch语句应该是这样的(我为您添加了缩进)


没有
中断用于
案例“A”
。。这是故意的吗?

在默认标签前面的“a”格中缺少break语句。您应该在case语句中的每个语句后中断,除非您打算让其他案例以及给定案例执行。

您能否澄清问题的具体原因…?我发现您的问题有点不明确-到底发生了什么(您在谈论哪条指令?)。然而,在
case'a'
中,你肯定缺少了一个
break
,他可能不想在case'a'中使用break…好吧,看看注释掉的if语句,他希望K、Q和J的值为10,a的值为11,其他所有的结果都是atoi。因此,添加break语句是有意义的。哦,妈的。。谢谢你的帮助。。不,那是个错误。由于我是c语言的新手,我错过了一件愚蠢的事情。@Sahriarrahmansupto。。放松点,伙计。。我们都这么做,你能给我推荐一些好的电子书让我更容易地学习C吗?@Sahriarrahmansupto这是一本非常流行的C学习书的电子书:C编程语言(K&R)。。谢谢我知道可能会有一些愚蠢的错误,就是这样。谢谢你的合作,让我学会了错误。。
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;
}