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