我很接近完成这一点,至少我希望如此,因为如果我不是,我会去疯了。我已经设法摆脱了所有的语法和错误,摆脱编译器,我开始希望我会终于完成,然后...它崩溃...这是为什么会崩溃? - C
给一点点假设要打印出'甲板'中的五个值 - 然后再次随机地将其打印出来(以显示它被洗牌)
我很亲密。我可以品尝它!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 52
enum faces{Ace = 0, Jack = 10, Queen, King};
char * facecheck(int d);
void shuffle(int deck[]);
void draw(int deck[SIZE]);
void cards(int hand);
int main()
{
int deck[SIZE], i, n;
char suits[4][9] =
{
"Hearts",
"Diamonds",
"Clubs",
"Spades"};
srand(time(NULL)) ;
for(i = 0; i<SIZE; i++)
{
deck[i] = i;
i++;
};
draw(deck);
shuffle(deck);
draw(deck);
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];
}
}
}
}
void shuffle(int deck[])
{
int i, j, temp;
for(i = 0; i < SIZE; i++)
{
j = rand() % SIZE;
temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
printf("The deck has been shuffled \n");
}
void draw(int deck[SIZE])
{
int i;
int hand[i];
for(i = 0; i < 5; i++)
{
cards(hand[i]);
putchar('\n');
}
}
void cards(hand)
{
int i;
char suits[4][9] =
{
"Hearts",
"Diamonds",
"Clubs",
"Spades"};
for(i=0; i<SIZE; 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]);
}
}
请问您可以发布错误信息吗? – jsedano 2013-04-05 23:01:01
我不想这么说,因为你显然已经做出了努力,但通常我们会要求你提供一小段代码,你知道这是导致问题的原因。你的操作系统是什么?因为我们至少可以建议一些调试器,它们可以让你看到崩溃的确切位置。 – zneak 2013-04-05 23:01:23
@ Anakata,没有错误信息,它编译器就好了。但是当我尝试在编译器中加载它时,它只是失败 @zneak我使用64位Windows 7,我也不知道问题是什么,否则我会这么做。 – 2013-04-05 23:05:09