我今天必须编写一副卡片生成程序,但我不确定为什么控制台窗口在运行时没有任何结果。目的是让它打印结构阵列中的所有卡片:" ... [42 4-C] [8 9-H] [43 5-S] [33 8-D] [34 9-C] [21 9-D] ......"。我摆脱它之前的最后一次构建错误是当我试图在DealCards()的参数中使用LoadDeck()时,它说singlecard与singlecard *不兼容。我通过制作一个新的struct singlecard数组,并使用memcpy和LoadDeck()返回单个数组来消除错误。需要一些帮助。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
struct singlecard LoadDeck();
bool CheckDup(int trialNum, struct singlecard deck[]);
char LoadFace(int cardnum);
char LoadSuit(int cardnum);
DealCards(struct singlecard deck[]);
struct singlecard
{
int cardnum;
char face;
char suit;
};
int main()
{
struct singlecard aNewDeck[52];
memcpy(aNewDeck, LoadDeck(), 52);
DealCards(aNewDeck);
}
struct singlecard LoadDeck()
{
struct singlecard deck[52];
srand(time(NULL));
int i=0;
int r = 1 + rand() % 52;
while (i < 52)
{
if (CheckDup(r, deck) == false)
{
deck[i].cardnum = r;
deck[i].face = LoadFace(r);
deck[i].suit = LoadSuit(r);
i++;
}
}
return deck[52];
}
bool CheckDup(int trialNum, struct singlecard deck[])
{
bool duplicate = false;
int i = 0;
while (i < 52 || duplicate == false)
{
if (trialNum = deck[i].cardnum)
{
duplicate = true;
}
else
{
i++;
}
}
return duplicate;
}
char LoadFace(int cardnum)
{
char faces[] = { 'A','2','3','4','5','6','7','8','9','T','J','Q','K' };
int factor = cardnum % 14;
return faces[factor];
}
char LoadSuit(int cardnum)
{
char suits[] = { 'H','D','C','S' };
int factor = cardnum % 5;
return suits[factor];
}
DealCards(struct singlecard deck[])
{
for (int i = 0; i < 52; i++)
{
printf("[%d %c-%c]", deck[i].cardnum, deck[i].face, deck[i].suit);
}
}
答案 0 :(得分:0)
我会添加评论,但没有分数所以“回答”是方式......
除了%13和%4以及基于零的索引和随机数生成之外,还有其他问题需要解决: