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个人分牌的测试,其他的自己测试吧、

时间: 2024-08-04 04:21:12

C语言的随机发牌程序(红桃、黑桃、梅花、方块)的相关文章

妞一个斗地主发牌程序!!!

学习java三个星期,利用所学的知识做了一个三人斗地主发牌程序,闲话少叙,上代码 1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 5 /** 6 * 三人斗地主程序 功能:将一副牌随机分发给地主(20张牌),农民A(17张牌),农民B (17张牌) 7 * 步骤:1.洗牌阶段:将54张牌储存到ArraryList 容器中(批量储存,for循环) 8 * 2.发牌阶段:

一个有趣的基于C++的模拟发牌程序

在内存中模拟出一副牌,然后模拟洗牌,发牌等动作. 流程是这样的:构建一副牌保存到一个数组中—洗牌—创建玩家—向玩家发牌–输出每个玩家的牌. #include <stdio.h> #include <stdlib.h> #include <time.h> //定义扑克的花色 enum Suit{ heart, spade, diamond, club, joker1, joker2 }; //一副牌的数量 #define CARD_COUNT 54 //定义扑克 type

斗地主发牌程序

//洗牌函数 shuffle() 接收一个数组 let shuffle = function(pokers){ for(let i=0;i<pokers.length;i++) { let random = parseInt(Math.floor(Math.random()*54));//随机生成54张牌的一个随机数 //两张牌进行交换 let temp = pokers[i]; pokers[i] = pokers[random]; pokers[random] = temp; } } //对

第十章 数组与集合 发牌程序 实例代码

解决方案目录: Suit.cs四种花色 namespace Cards { enum Suit { Clubs, Diamonds, Hearts, Spades } } Value.cs扑克牌的13中面值 namespace Cards { enum Value { Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace } } Pack.cs发牌程序核心类 namespace Cards { u

随机发牌

#include "stdafx.h"#include <stdlib.h>#include <stdio.h>#include <string.h>#include <time.h>typedef struct card{ char suit[10]; char face[10];}CARD;void Deal(CARD *wCard);void shuffle(CARD *wCard);void FillCard(CARD wCard

在Android(Java)开发中如何实现类似C语言中的中断程序

在Android开发过程中,有时候会遇到这样的情况,在一个线程中,执行A操作,B操作需要等A操作结束后才进行,因此需要wait,在java中可以如下代码实现 Handler mBlueHandler = new Handler(Looper.getMainLooper()); Task task = new Task(); mBlueHandler.post(task); while (!task.finish) { synchronized (task) { try { task.wait()

随机点名程序与万年历

随机点名程序 document.write(Math.random()); var stu = ["张三", "王五", "张二", "张一", "石大", "郭三", "冯二", "平五"]; var ran = Math.random(); var ran = ran * stu.length; var ran = Math.floor(ran

java随机发牌

public class CardGame { public static void main(String[] args) { String[]suits={"spades","dimonds","Hearts","clubs"}; String[]nums={"A","2","3","4","5","6"

iOS 多语言支持,应用程序国际化 xcode4.5

最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 1.本地化应用程序名称2.本地化字符串3.本地化图片4.本地化其他文件 1.本地化应用程序名称 (1)点击"new file"然后在弹出窗口左侧选择IOS的resource