为了账号安全,请及时绑定邮箱和手机立即绑定

C语言洗牌发牌程序

C语言洗牌发牌程序

C
慕粉3160742 2016-05-05 11:13:34
请问谁会用C语言编写洗牌发牌程序,要运用到枚举
查看完整描述

2 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

#include <stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct{
	char *color;
	char *number;
}Card;

void shuffle(Card cards[][13],int n,int m)
{
	srand(time(0));
	Card card[52];
	Card tempCard;
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			card[i*13+j]=cards[i][j];
		}
	}
	for(i=0;i<52;i++)
	{
		int temp=rand()%(52-i)+i;
		tempCard=card[i];
		card[i]=card[temp];
		card[temp]=tempCard;
	}
	for(i=0;i<4;i++)
	{
		for(j=0;j<13;j++)
		{
			cards[i][j]=card[i*13+j];
		}
	}
}
void main()
{
	char colors[4][10]={"红心","梅花","方块","黑桃"}; 
	char number[][4]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
	Card cards[4][13];//共52张牌(不考虑大小王)
	int i,j;
	for(i=0;i<=3;i++)
	{
		for(j=0;j<=12;j++)
		{
			cards[i][j].color=colors[i];
			cards[i][j].number=number[j];
		}
	}


	printf("洗牌前:\n");
	for(i=0;i<=3;i++)
	{
		for(j=0;j<=12;j++)
		{
			printf("%s%s ",cards[i][j].color,cards[i][j].number);
		}
		printf("\n");
	}


	shuffle(cards,4,13);


	printf("洗牌后:\n");
	for(i=0;i<=3;i++)
	{
		for(j=0;j<=12;j++)
		{
			printf("%s%s ",cards[i][j].color,cards[i][j].number);
		}
		printf("\n");
	}

}

//img1.sycdn.imooc.com//585ddb470001385906420186.jpg

ps:我这里有一个用数组做的,希望对你有帮助。

查看完整回答
3 反对 回复 2016-12-24
  • 2 回答
  • 2 关注
  • 3670 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信