C/C++学习日记:C语言的随机发牌小程序(红桃、黑桃、梅花、方块)

313 阅读1分钟

前言:做一个随机发牌的C语言程序,供大家学习,思考。未做任何注释,有测试时候留下的一些输出语句,一遍方便测试。

![](https://upload-images.jianshu.io/upload_images/24762785-c8b2d966683b0af0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

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("\n\n第%d个人的牌\n",j+1);

wj --;

if (wj>=0)

wii = wi + 1;

else

wii = wi;

//红桃

printf("红桃 %c ",3);

printf(":");

for(i = j*wii;i<(j+1)*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<(j+1)*wii;i++)

{

if (b[i]<=26&&b[i]>13)

{

m++;

![](https://upload-images.jianshu.io/upload_images/24762785-655b80fb0bd84b83.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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<(j+1)*wii;i++)

{

![](https://upload-images.jianshu.io/upload_images/24762785-a4b00a0264ca2fa6.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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<(j+1)*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++)

{

![](https://upload-images.jianshu.io/upload_images/24762785-89104225ea1cefa2.gif?imageMogr2/auto-orient/strip)

if (b[i]==53)

{

m++;

printf("A ");

}

if (b[i]==54)

{

m++;

printf("a ");

}

}

printf("\n总共:%d张牌!!!",m);

}

}

测试结果,由于屏幕显示有限,我只做2个人分牌的测试,其他的自己测试吧

PS:想查看更多资料请加入我的企鹅圈,更有免费开源项目和课程等你观看哦!

![](https://upload-images.jianshu.io/upload_images/24762785-643f485f25cb4fb6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)