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("
说明:
");
	printf("*******************
");
	printf("**    红桃 %c     ",3);
	printf("**
");
	printf("**    方块 %c     ",4);
	printf("**
");
	printf("**    梅花 %c     ",5);
	printf("**
");
	printf("**    黑桃 %c     ",6);
	printf("**
");
	printf("**    大王 A     **
**    小王 a     **
");
	printf("*******************
");
	printf("
请输入打牌人数:
");
	scanf("%d",&w);
	wi = 54/w;
	wj = 54%w;
	//printf("%d,%d",wi,wj);
	for (j = 0;j < w;j++)
	{
		m = 0;
		printf("

第%d个人的牌
",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("
方块 %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("
梅花 %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("
黑桃 %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("
大小王 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("
总共:%d张牌!!!",m);
	}
	
}

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

原文地址:https://www.cnblogs.com/acmwangpeng/p/5601844.html