一副牌: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. HBase简介(很好的梳理资料)

    http://www.tuicool.com/articles/iieIz2 一.   简介 history  started by chad walters and jim 2006.11 G re ...

  2. SID与GUID的区别

    1.在AD里面创建一个用户或者组都会为其分配一个SID,同时也会为这些对象分配一个GUID,GUID是一个128位的字符串,一个标识符,GUID不仅在整个域里面是唯一的,并且在全世界的范围内都是唯一的 ...

  3. java语言基础02

    一.Java语言基础(常量的概述和使用)(掌握) 1:什么是常量 就是在程序的执行过程中其值不发生改变的量. 2:Java中常量的分类 (1):字面值常量 (2):自定义常量(面向对象部分讲解) 3: ...

  4. 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser

    本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...

  5. Web前端代码规范与页面布局

    一.    规范目的: 为提高工作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,在网站建设中,使结构更加清晰,代码简明有序,有一个更好的前端架构,有利于SEO优化.   二.     ...

  6. 软件工程 speedsnail 第二次冲刺7

    20150524 完成任务:蜗牛碰到线后速度方向的调整: 遇到问题: 问题1 方向用到abs等函数,不熟悉 解决1 查看文档 明日任务: 蜗牛碰到线后速度方向的调整:(做优化)

  7. 《第一行代码--Android》阅读笔记之数据持久化

    1.升级数据库 为了避免手工清空数据(或卸载重装APP),重写SQLiteOpenHelper里面的onUpgrade()方法   引用自http://blog.csdn.net/longvslove ...

  8. SQL Server自增长列插入指定值 -- SET IDENTITY_INSERT ON|OFF(转)

    想要将值插入到自动编号(或者说是标识列,IDENTITY)中去,需要设定 SET IDENTITY_INSERT 示例: 1.首先建立一个有标识列的表:CREATE TABLE products (i ...

  9. 【推介】GitHub

    隆重推介:GitHub(https://github.com/) 作为开源代码库以及版本控制系统,Github拥有140多万开发者用户. 随着越来越多的应用程序转移到了云上,Github已经成为了管理 ...

  10. mssql 置疑的处理

    declare @dbName sysName ALTER DATABASE @dbName SET EMERGENCY ALTER DATABASE @dbName SET SINGLE_USER ...