计算两张牌二十一点牌的总价值

时间:2013-11-05 00:34:04

标签: c

我需要编写一个函数,它将双卡二十一点手的值作为输入,并打印出手的总点数。这就是我到目前为止,但总回报为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;
}

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您永远不会将num_of_cards的值设置为零,而是在声明它时设置的值。因此,您使用card_score卡调用0函数,并且for循环永远不会运行。

for (int i=0; i<num_of_cards;i++)  // i is never < num_of_cards