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