洗牌发牌
解释
我的小代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Shuffle(int A[][13]);
void Deal(int A[][13]);
void Print(int a,int b,int c);
int main()
{
srand(time(NULL));
int A[4][13]={0};
Shuffle(A);
Deal(A);
return 0;
}
void Shuffle(int A[][13])
{
int r,c;
for(int i=1;i<=52;)
{
r=rand()%4;
c=rand()%13;
if(A[r][c]==0)
{
A[r][c]=i;
i++;
}
}
}
void Deal(int A[][13])
{
int find=0;
for(int card=1;card<=52;)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
if(A[i][j]==card)
{
Print(card,i,j);
card++;
}
}
}
}
}
void Print(int a,int b,int c)
{
printf("the %d is ",a);
if(b==0) printf("hongtao ");
if(b==1) printf("heitao ");
if(b==2) printf("meihua ");
if(b==3) printf("fangpian ");
printf("%d\n",c+1);
}
心得
1.可以把card++;i++;放在if语句中
2.按照card的顺序历遍二维数组来找到那个值