一副牌:54张

从0开始排序:

0-12表示黑桃   A 1,2,3,... 10,J,Q,K

13-25表示红桃 A 1,2,3,... 10,J,Q,K

26-38表示草花 A 1,2,3,... 10,J,Q,K

39-51表示方块 A 1,2,3,... 10,J,Q,K

52,53表示大小王

#include <stdio.h>

void shuffle(char *porker)
{
/*将存放数组初始化为1-54*/
for (int i = ; i < ; i++)
{
porker[i] = i;
} /*生成随机种子*/
srand(time(NULL)); /*洗牌,生成随机数,两两交换*/
for (int i = ; i < ; i++)
{
int rnd = rand() % ;
/*指定任意一张牌,与当前牌进行交换*/
int temp = porker[i];
porker[i] = porker[rnd];
porker[rnd] = temp;
}
} void play(char *porker)
{
for (int i = ; i < ; i++)
{
printf("i=%2d\t", porker[i]);
if ((i + ) %==)
printf("\n");
} } void bottom(char *porker)
{
/*定义花色的枚举体*/
enum TYPE{
黑桃,红桃,草花,方块
};
/*定义几个特殊牌的枚举体*/
enum VALUE{
A=,J = , Q, K
}; printf("\n=======底牌=========\n");
for (int i = ; i < ; i++)
{
/*大小王特殊处理*/
if (porker[i] == ) printf("小王");
if (porker[i] == ) printf("大王");
else{
/*0-12代表红桃的A-1-2-K*/
int type = porker[i] / ;
int value = porker[i] % ;
switch (type)
{
case 黑桃:printf("黑桃"); break;
case 红桃:printf("红桃"); break;
case 草花:printf("草花"); break;
case 方块:printf("方块"); break;
}
switch (value)
{
case A:printf("A"); break;
case J:printf("J"); break;
case Q:printf("Q"); break;
case K:printf("K"); break;
default:printf("%d", value); break;
}
printf("\t");
}
}
} int main()
{
/*存放54张扑克的数组*/
char porker[] = { }; /*洗牌*/
shuffle(porker);
/*出牌*/
play(porker);
/*底牌,3张底牌*/
bottom(porker); system("pause");
return ;
}

用C语言实现的扑克牌洗牌程序的更多相关文章

  1. C语言实训——扑克牌洗牌程序

    说明此程序本来是21点扑克程序的一个被调函数,在这里我单独将它拿出来作为一个小程序. #include<stdio.h> #include<time.h> #include&l ...

  2. 基于visual Studio2013解决C语言竞赛题之1053洗牌

       题目 解决代码及点评 /* 功能:洗扑克牌.将54张牌分别编号为1,2,-,54号,并放在数组M中. 洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换: ...

  3. java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习

    package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...

  4. C++分享笔记:扑克牌的洗牌发牌游戏设计

    笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...

  5. C++走向远洋——67(项目二、洗牌)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. C语言:判断t所指字符串中的字母是否由连续递增字母组成。-判断一个输入的任何整数n,是否等于某个连续正整数序列之和。-将一副扑克牌编号为1到54,以某种方式洗牌,这种方式是将这副牌分成两半,然后将他们交叉,并始终保持编号1的牌在最上方。

    //判断t所指字符串中的字母是否由连续递增字母组成. #include <stdio.h> #include <string.h> void NONO(); int fun( ...

  7. LinkedList存储一副扑克牌,实现洗牌功能。

    package cd.itcast.runble; import java.util.LinkedList; import java.util.Random; /** * LinkedList存储一副 ...

  8. 洗牌算法Fisher-Yates以及C语言随机数的产生

    前些天在蘑菇街的面试中碰到一道洗牌的算法题,拿出来和大家分享一下! 原题是:54张有序的牌,如何无序的发给3个人? 这个题是运用经典的洗牌算法完成.首先介绍一种经典的洗牌算法--Fisher-Yate ...

  9. AS3.0 扑克牌乱序排列法洗牌

    package { /* *@ClassName:package::PokerMain *@Intro:这是一个初始化1-52扑克牌,然后进行乱序排列进行洗牌: *@Author:非若 *@Date: ...

随机推荐

  1. MAC OS下免费下载YouTube

    YouTube上有很多不错的视频,你感兴趣的视频除了可以加入自己播放列表之外,还可以将其下载到本地收藏起来.推荐这款软件“Xilisoft Download YouTube Video for Mac ...

  2. linux禁止tty终端登陆

    修改文件/etc/pam.d/system-auth #%PAM-1.0# This file is auto-generated.# User changes will be destroyed t ...

  3. table中绝对定位元素相对td定位失效解决方案

    开门见山! 问题:在一个table中,我需要在td里面绝对定位一个div, 写法:td{position:relative;} div{position:absolute;} OK,就这么简单,思路也 ...

  4. canvas 绘圆加边框

    HTML5中canvas元素,绘制圆形需要使用路径,开始时要取得图形上下文,首先使用路径来勾勒图形的轮廓,然后设置颜色,进行绘制. arc(cx,cy,radius,start_angle,end_a ...

  5. tomcat学习笔记2

    LNMT在网站架构中的实现过程: Client --> http --> Nginx --> reverse_proxy (http) --> tomcat (http con ...

  6. C#代码利用MongoDB中Group聚合函数查询

    例子: public static void getUserRFM(DateTime beginTime, DateTime endTime)        {            MongoDat ...

  7. Yii-数据模型- rules类验证器方法详解

    public function rules(){ return array( array('project_id, type_id, status_id, owner_id, requester_id ...

  8. css3圆角边框,边框阴影

    border-radius向元素添加圆角边框,css3中的.IE9+ chrome safari5+ firefox4+ 现在都支持.可以向input div等设置边框.与border相似,可以四个角 ...

  9. java学习资源汇总

    http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

  10. equals方法,hashcode()方法

    Object类的equals 方法 用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写.   (一)说到equals方法,不得不提一下==号. ==用于比较引用和比较原生数据类型时具有不同 ...