0

我需要一些帮助,我一直在努力让这段代码工作,但我一生都无法弄清楚我做错了什么请帮助基本上我要做的就是模拟一副纸牌。我知道除了让这些面孔匹配之外,我基本上必须为所有事情做些什么。并让程序运行。我已经绞尽脑汁好几天了,我需要帮助。请帮我

#include <stdio.h>
#include<string.h>

enum faces{Ace = 0, Jack = 10, Queen, King};
char * facecheck(int d); 


int main() 
{ 
    int deck[52], i, n;
    char suits[4][9] = 
    {
         "Hearts",
         "Diamonds",
         "Clubs",
         "Spades"};


    n = 0;

    for(i = 0; i<52; i++)
    {
          deck[i] = n;
          n++;
          };



    for(i=0; i<52; i++)
    {
             printf("%2d of %s \n", i%13, suits[i/13]);
             if(i%13 == 0 || i%13 == 10 || i%13 == 11 || i%13 == 12)
             printf("%s \n ", facecheck(i) );
             };


    return 0; 
}  

char * facecheck(int d)
{
     static char * face[] = 
     {
            "Ace",
            "Jack",
            "Queen",
            "King" };

           if(d == Ace) 
           return face[0];
           else
           {
               if(d == Jack) 
               return face[1];
               else
               {
                   if(d == Queen)
                   return face[2];
                   else 
                   { 
                        if(d == King)
                        return face[3];
                   }
               }
           }
}
4

2 回答 2

1

这有效:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

enum faces{Ace = 0, Jack = 10, Queen, King};
char * facecheck(int d); 


int main() 
{ 
    int deck[52], i, n;
    char suits[4][9] = 
    {
        "Hearts",
        "Diamonds",
        "Clubs",
        "Spades"};


    n = 0;

    for(i = 0; i<52; i++)
    {
        deck[i] = n;
        n++;
    };



    for(i=0; i<52; i++)
    {       
        if(i%13 == 0 || i%13 == 10 || i%13 == 11 || i%13 == 12)
            printf("%s ", facecheck(i%13) );
        else printf("%d ", i%13+1);
        printf("of %s \n", suits[i/13]);
    }

    system("pause");
    return 0; 
}  

char * facecheck(int d)
{
    static char * face[] = 
    {
        "Ace",
        "Jack",
        "Queen",
        "King" };

    if(d == Ace)
        return face[0];
    else
    {
        if(d == Jack) 
            return face[1];
        else
        {
            if(d == Queen)
                return face[2];
            else 
            { 
                if(d == King)
                    return face[3];
            }
        }
    }
}
于 2013-04-02T22:16:44.060 回答
1

facecheck()当输入是 0、10、11 和 12 四个有效和已处理值之一时,它会优雅地运行。

但是,调用者将整个范围 [0, 52) 作为输入传递。

for(i=0; i<52; i++)
printf("%s \n ", facecheck(i) );

这就是问题的根源。

我认为facecheck()可以增强该功能以针对无效输入执行某些操作(例如断言或打印错误)。

于 2013-04-02T21:55:35.160 回答