0

我需要编写一个函数,将两张牌二十一点手的值作为输入,并打印出手的总点数。这是我到目前为止所拥有的,但总回报为 0。

int card_score(int num_of_cards)
{


char card_value[SIZE];
int ace_seen=0, total=0;

for (int i=0; i<num_of_cards;i++)

{
    switch (card_value[i])
    {

        case 'a': case 'A':
            total +=11;
            ace_seen++;
            break;
        case 'k': case 'K':
        case 'q': case 'Q':
        case 'j': case 'J':
        case 't': case 'T':
            total +=10;
            break;

        case '9':
            total +=9;
            break;

        case '8':
            total +=8;
            break;

        case '7':
            total +=7;
            break;

        case '6':
            total +=6;
            break;

        case '5':
            total +=5;
            break;

        case '4':
            total +=4;
            break;

        case '3':
            total +=3;
            break;

        case '2':
            total +=2;
            break;

        default:  
            printf("Invalid cards. Please try again.");                         
            break;


    }
}
         return total;

}


int main()
{
    char card_value[SIZE];
    int num_of_cards = 0;
    int total;
    int i = 0;

    printf("\n\nEnter cards: ");
    scanf("%c", &card_value[i]);

    total  = card_score(num_of_cards);
    printf("\n\nYour score is %d: \n",total);
    return 0;
}

任何帮助,将不胜感激。谢谢。

4

2 回答 2

1

您的 num_of_cards 为 0。它甚至没有进入循环。也许要求用户输入或硬编码为你真正想要的

于 2013-11-05T00:38:29.303 回答
1

您永远不会将值设置为num_of_cards除零之外的任何值,这是您在声明它时设置的。因此,你用卡片调用你的card_score函数,你的循环永远不会运行。0for

for (int i=0; i<num_of_cards;i++)  // i is never < num_of_cards
于 2013-11-05T00:39:27.367 回答