在C中生成一副牌

时间:2014-03-06 06:23:54

标签: c

我的作业需要一些帮助。我们应该生成并打印所有52张卡片,但我无法理解如何打印“Ace”,“2”......等等。

4 个答案:

答案 0 :(得分:0)

在循环中放置一个switch语句:

int temp = i%13;
switch(temp) 
{
 case (0):
    printf("Card %2d = King %s\n", i, suits[i/13]); 
   break;
 case (1):
    printf("Card %2d = Ace %s\n", i, suits[i/13]); 
   break;

 . . .

default:
    printf("Card %2d = %2d %s\n", i, i%13, suits[i/13]); 


} 

答案 1 :(得分:0)

答案的一般主题是为数字编写一个翻译方案。因此,如果他们有一个

,你必须让中间人将卡号翻译成他们的名字
char * card_name(int number) {
    switch (number) {
        case 0: return "King";
        case 1: return "Ace";
        case 11: return "Jack";
        case 12: return "Queen";
        default: return inttostr(number);
    }
}

然后你必须重写你的打印声明:

printf("Card %2d = %2d of %s\n", i, card_name(i%13), suits[i/13]);

会给你:

Card 0 = King of Hearts
Card 1 = Ace of Hearts

答案 2 :(得分:0)

for(i=0; i < 52; i++)
{ 
    if(i%13==0)
    {
      printf("Card %2d = King %s\n", i,suits[i/13]); 
    }
    else if(i%13==1)
    {
      printf("Card %2d = Ace %s\n", i,suits[i/13]); 
    }
    else if(i%13==11)
    {
      printf("Card %2d = Jack %s\n", i,suits[i/13]); 
    }
    else if(i%13==12)
    {
      printf("Card %2d = Queen %s\n", i,suits[i/13]); 
    }
    else
    {
       printf("Card %2d = %2d %s\n", i, i%13, suits[i/13]); 
    }
} 

另一个解决方案是为“King”“Ace”“Jack”和“Queen”添加更多条件循环

答案 3 :(得分:0)

您可以使用模数(%)运算符。

char *suits[4] = {"Hearts", "Diamonds", "Clubs", "Spades"}; 
char *face[13] = {"King", "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10",
            "Jack", "Queen"};

int main( ) 
{ 
    int i;

    for(i=0; i < 52; i++) { 
        printf("Card %2d = %s %s\n", i, face[i % 13], suits[i / 13]); 
    } 

    return 0;
}

在线编译链接:http://ideone.com/xsRTEy