前言:做一个随机发牌的C语言程序,供大家学习,思考。未做任何注释,有测试时候留下的一些输出语句,一遍方便测试。
#include
#include
#include
int main()
{
int a[60];
int b[60];
int w = 0;
int wi,wj,wii;
int i,j,index,x=0,m;
for(i=0;i<54;i++)
a[i]=i+1;
srand((unsigned)time(0));
for(i=0;i<54;)
{
index=rand()%54;
if(a[index]!=0)
{
b[i]=a[index];
//printf("%d ",b[i]);
a[index]=0;
++i;
}
}
printf("n说明:n");
printf("*******************n");
printf("** 红桃 %c ",3);
printf("**n");
printf("** 方块 %c ",4);
printf("**n");
printf("** 梅花 %c ",5);
printf("**n");
printf("** 黑桃 %c ",6);
printf("**n");
printf("** 大王 A **n** 小王 a **n");
printf("*******************n");
printf("n请输入打牌人数:n");
scanf("%d",&w);
wi = 54/w;
wj = 54%w;
//printf("%d,%d",wi,wj);
for (j = 0;j < w;j++)
{
m = 0;
printf("nn第%d个人的牌n",j+1);
wj --;
if (wj>=0)
wii = wi + 1;
else
wii = wi;
//红桃
printf("红桃 %c ",3);
printf(":");
for(i = j*wii;i
{
if (b[i]<=13&&b[i]>0)
{
m++;
if (b[i]==11)
printf("J ");
else if (b[i]==12)
printf("Q ");
else if (b[i]==13)
printf("K ");
else
printf("%d ",b[i]);
}
}
//方块
printf("n方块 %c ",4);
printf(":");
for(i = j*wii;i
{
if (b[i]<=26&&b[i]>13)
{
m++;
b[i] = b[i]-13;
if (b[i]==11)
printf("J ");
else if (b[i]==12)
printf("Q ");
else if (b[i]==13)
printf("K ");
else
printf("%d ",b[i]);
}
}
//梅花
printf("n梅花 %c ",5);
printf(":");
for(i = j*wii;i
{
if (b[i]<=39&&b[i]>26)
{
m++;
b[i] = b[i]-26;
if (b[i]==11)
printf("J ");
else if (b[i]==12)
printf("Q ");
else if (b[i]==13)
printf("K ");
else
printf("%d ",b[i]);
}
}
//黑桃
printf("n黑桃 %c ",6);
printf(":");
for(i = j*wii;i
{
if (b[i]<=52&&b[i]>39)
{
m++;
b[i] = b[i]-39;
if (b[i]==11)
printf("J ");
else if (b[i]==12)
printf("Q ");
else if (b[i]==13)
printf("K ");
else
printf("%d ",b[i]);
}
}
//大小王
printf("n大小王 A or a :");
for(i = j*wii;i<=(j+1)*wii;i++)
{
if (b[i]==53)
{
m++;
printf("A ");
}
if (b[i]==54)
{
m++;
printf("a ");
}
}
printf("n总共:%d张牌!!!",m);
}
}
测试结果,由于屏幕显示有限,我只做2个人分牌的测试,其他的自己测试吧
内容来源于网络如有侵权请私信删除