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個人分牌的測試,其他的自己測試吧、


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM