#include
#include
#include
void shuffle(int Deck[][13])
{
int i;
for(i=1;i<=52;i++)
{
int row = rand() % 4;
int column =rand() %13;
if(Deck[row][column]==0)
Deck[row][column]=i;
}
}
void deal(int Deck[][13],char *suit[],char *value[])
{
int i,column,row;
printf("玩家1\t玩家2\t玩家3\t玩家4\t");
for(i=1;i<=52;i++)
{
row=0;
if(row<=3)
{
column=0;
if(column<=12)
{
printf(" %c%2c",row,column);
}
if(i%4==0) printf("\n");
column++;
}
row++;
}
return 0;
}
int main()
{
char *suit[4]={"红桃","方片","草花","黑桃"};
char *value[13]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int Deck[4][13];
srand(time(NULL));
shuffle(Deck);
deal(Deck,suit,value);
return 0;
}
运行结果不对,哪位大神能看一看是哪里出错了吗?谢谢
首先,那个viod型是不需要返回值return 0去掉
其次你这个是改错题还是编程题,我有两种办法,第一种是在你的基础上改代码
还有一种是用另一种方法只要一个自定义函数求解
第一个是在你的基础上改的:
#include <stdio.h>
void shuffle(int Deck[][13])
{
int i;
for(i=1;i<=52;)
{
int row = rand() % 4;
int column =rand() %13;
if(Deck[row][column]==0)
{
Deck[row][column]=i;
i++;
}
}
}
void deal(int Deck[][13],char *suit[],char *value[])
{
int i=0,column,row,flag=0;
printf("玩家1\t玩家2\t玩家3\t玩家4\n");
for(i=1;i<=52;i++)
{
flag=0;
for(row=0;row<=3;row++)
{
for(column=0;column<=12;column++)
{
if(Deck[row][column]==i){
flag=1;
break;
}
}
if(flag==1) break;
}
printf("%s%2s\t",suit[row],value[column]);
if(i%4==0) printf("\n");
}
}
int main()
{
char *suit[4]={"红桃","方片","草花","黑桃"};//指针数组
char *value[13]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int Deck[4][13]={0};//二维数组
srand(time(NULL));
shuffle(Deck);
deal(Deck,suit,value);//发牌
return 0;
}
第二个是我的想法:
#include <stdio.h>
void deal(char *suit[],char *value[]);
int main()
{
char *suit[4]={"红桃","方片","草花","黑桃"};//指针数组
char *value[13]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand(time(NULL));
deal(suit,value);//发牌
return 0;
}
void deal(char *suit[],char *value[])
{
int i,column,row;
int cun[52]={0},j,a,b;
printf("玩家1\t玩家2\t玩家3\t玩家4\n");
for(i=1;i<=52;i++)
{
j=rand() % 52;
a=j/13;
b=j%13;
if(cun[j]==0)
{
cun[j]=60;
printf("%s%2s\t",suit[a],value[b]);
if(i%4==0)
printf("\n");
}
else
i-=1;
}
}
如有错误也请帮忙指正,谢谢