C语言的随机发牌程序(红桃黑桃梅花方块)

Posted 小小暮雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的随机发牌程序(红桃黑桃梅花方块)相关的知识,希望对你有一定的参考价值。

做一个随机发牌的C语言程序,供大家学习,思考。

未做任何注释,有测试时候留下的一些输出语句,一遍方便测试。

 

/*
author:nunu
qq:398269786
*/
#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++;
				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++)
		{
			
			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++)
		{
			if (b[i]==53)
			{
				m++;
				printf("A ");
			}
			if (b[i]==54)
			{
				m++;
				printf("a ");
			}
		}
		printf("\\n总共:%d张牌!!!",m);
	}
	
}

 

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

以上是关于C语言的随机发牌程序(红桃黑桃梅花方块)的主要内容,如果未能解决你的问题,请参考以下文章

C语言每日一练——第64天:自动发牌程序

c语言编程问题。。。这是一个作业。。实在不会写,求大神帮忙。。。

关于扎金花php版

4月6日--关于算法数的练习题--扑克洗牌

C语言实现随机抽取纸牌

TYVJ2002 扑克牌