Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言生成一副卡片_C - Fatal编程技术网

用C语言生成一副卡片

用C语言生成一副卡片,c,C,我的作业需要一些帮助。我们应该生成并打印所有52张卡,但我在理解如何打印“Ace”、“2”……等方面遇到了困难。在循环中放入一个切换语句: 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;

我的作业需要一些帮助。我们应该生成并打印所有52张卡,但我在理解如何打印“Ace”、“2”……等方面遇到了困难。

在循环中放入一个切换语句:

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]); 


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

答案的总主题是编写数字到值的转换方案。所以你必须有一个中介将卡号翻译成他们的名字,如果他们有的话

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);
    }
}
然后,您必须重写打印语句:

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]); 


} 
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
(i=0;i<52;i++)的

{ 
如果(i%13==0)
{
printf(“卡%2d=国王%s\n”,i,套装[i/13]);
}
else if(i%13==1)
{
printf(“卡%2d=Ace%s\n”,i,套装[i/13]);
}
否则如果(i%13==11)
{
printf(“卡%2d=插孔%s\n”,i,套装[i/13]);
}
否则如果(i%13==12)
{
printf(“卡%2d=女王%s\n”,i,套装[i/13]);
}
其他的
{
printf(“卡%2d=%2d%s\n”,i,i%13,适合[i/13]);
}
} 

另一个解决方案是在循环中为“King”、“Ace”、“Jack”和“Queen”添加更多条件,您可以使用模(%)运算符

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;
}
char*套装[4]={“红心”、“钻石”、“梅花”、“黑桃”};
字符*脸[13]={“国王”、“王牌”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”,
“杰克”,“女王”};
int main()
{ 
int i;
对于(i=0;i<52;i++){
printf(“卡%2d=%s%s\n”,i,面[i%13],套装[i/13]);
} 
返回0;
}

联机编译器链接:

另一个列名为的数组?您已经为套装找到了它。卡牌等级也没什么不同。所以我是不是越来越接近了?它现在将显示人脸,但对所有的红心重复“国王”,对所有的钻石重复“王牌”,对其余的套装重复两个循环将使其更可读IMHO for(套装=0;套装<4;++)for(值=0;值<13;++value)然后直接将变量用作数组中的索引,这样就不那么麻烦了,可以包含
案例2:返回“2”等,而不是担心
inttostr
的内存分配。这会使用全局变量还是要求调用者释放某些字符串的结果?`const char*const foo[13]={“King”、“Ace”、“2”、“3”、“4”、“4”、“9}的数组;我会成功的。