换方法写了好多次,代码结果还是不对啊,麻烦大佬纠正完善一下万分感谢呜呜。

统计“21点”(BlackJack)游戏的点数。要求输入手中的2~5张牌的点数,可为2~10、J、Q、K、A。牌点为2~10的每张牌都分别记为相应的点数,花牌(JQK)记为10点,A既可以记为1点,也可记为11点,选择最为有利的。目标是尽可能接近但不要超过21点,超过21点表示这一手牌已经“爆”了。例如,一张A和一张10可记为11点或21点,但由于21点更好,要记为21点;1张A和2张8可记为17点或者27点,但由于27点已经“爆”了,要记为17点。输入应能够支持大小写,输出2~21的一个数字,或者“爆了”的提示信息。

#include<stdio.h>

int main() {
    char a, b, c, d, e;
    int sum=0;
    while(1){
        scanf("%c",&a);
        if(a=='\n')break;
    }
        while(1){
        scanf("%c",&b);
        if(b=='\n')break;
    }
        while(1){
        scanf("%c",&c);
        if(c=='\n')break;
    }
        while(1){
        scanf("%c",&d);
        if(d=='\n')break;
    }
        while(1){
        scanf("%c",&e);
        if(e=='\n')break;
    }

    switch(a){
        case 'j':sum+=10;break;
        case 'J':sum+=10;break;
        case 'q':sum+=10;break;
        case 'Q':sum+=10;break;
        case 'k':sum+=10;break;
        case 'K':sum+=10;break;
        default:sum=sum+a-'0';
    }
    switch(b){
        case 'j':sum+=10;break;
        case 'J':sum+=10;break;
        case 'q':sum+=10;break;
        case 'Q':sum+=10;break;
        case 'k':sum+=10;break;
        case 'K':sum+=10;break;
        default:sum=sum+b-'0';
    }
    switch(c){
        case 'j':sum+=10;break;
        case 'J':sum+=10;break;
        case 'q':sum+=10;break;
        case 'Q':sum+=10;break;
        case 'k':sum+=10;break;
        case 'K':sum+=10;break;        
        default:sum=sum+c-'0';
    }
    switch(d){
        case 'j':sum+=10;break;
        case 'J':sum+=10;break;
        case 'q':sum+=10;break;
        case 'Q':sum+=10;break;
        case 'k':sum+=10;break;
        case 'K':sum+=10;break;
        default:sum=sum+d-'0';

    }
    switch(e){
        case 'j':sum+=10;break;
        case 'J':sum+=10;break;
        case 'q':sum+=10;break;
        case 'Q':sum+=10;break;
        case 'k':sum+=10;break;
        case 'K':sum+=10;break;
        default:sum=sum+e-'0';
    }
    printf("%d",sum);
}

具体什么输入导致了什么输出?