(结构体)随机发牌。一副纸牌52张,4种花色,每种花色13张。用程序模拟随机发牌过程,将52张牌按轮转的方式发放给4人,并输出发牌结果。(当我使用单文件编程时,可以运行。但是当我将调用的函数放到另一个文件里,结果就不行了)
源.c
#include
#include
#include
#include"1.h"
struct card
{
int suit;
int face;
};
int main()
{
int i;
struct card deck[52];
const char* suit[] = { "s","ss","sss","ssss" };
const char* face[] = { "A","K","Q","J","10","9","8","7","6","5","4","3","2","1" };
deal(deck);
for (i = 0; i < 52; i++)
{
if (i % 13 == 0) {
printf("Player %d:\n", i / 13 + 1);
}
printf("%s of %s\n", face[deck[i].face], suit[deck[i].suit]);
}
return 0;
}
1.h
void deal(struct card* wdeck)
{
int m, i, t;
static int temp[52] = { 0 };
srand(time(NULL));
for (i = 0; i < 52; i++)
{
while (1) {
m = rand() % 52;
if (temp[m] == 0) {
break;
}
}
temp[m] = 1;
t = (i % 4) * 13 + (i % 4);
wdeck[t].suit = m / 13;
wdeck[t].face = m % 13;
}
}
用VS时
单文件时可行,为什么两个文件不行
单文件时
#include
#include
#include
//#include"1.c"
struct card
{
int suit;
int face;
};
void deal(struct card* wdeck)
{
int m, i, t;
static int temp[52] = { 0 };
srand(time(NULL));
for (i = 0; i < 52; i++)
{
while (1) {
m = rand() % 52;
if (temp[m] == 0) {
break;
}
}
temp[m] = 1;
t = (i % 4) * 13 + (i % 4);
wdeck[t].suit = m / 13;
wdeck[t].face = m % 13;
}
}
int main()
{
int i;
struct card deck[52];
const char* suit[] = { "s","ss","sss","ssss" };
const char* face[] = { "A","K","Q","J","10","9","8","7","6","5","4","3","2","1" };
deal(deck);
for (i = 0; i < 52; i++)
{
if (i % 13 == 0) {
printf("Player %d:\n", i / 13 + 1);
}
printf("%s of %s\n", face[deck[i].face], suit[deck[i].suit]);
}
return 0;
}
.h文件你可以理解成把.h文件中的内容复制到你的.c中。两个文件的时候 你.h里面的函数过来的时候在结构体定义之前了 。你要把.h放在定义结构体的后面 或者把你的结构体定义到.h中去
把 include “1.h” 放到 结构体定义之后、主程序之前。