我的作业需要一些帮助。我们应该生成并打印所有52张卡片,但我无法理解如何打印“Ace”,“2”......等等。
答案 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