用C语言实现的扑克牌洗牌程序
一副牌: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语言实现的扑克牌洗牌程序的更多相关文章
- C语言实训——扑克牌洗牌程序
说明此程序本来是21点扑克程序的一个被调函数,在这里我单独将它拿出来作为一个小程序. #include<stdio.h> #include<time.h> #include&l ...
- 基于visual Studio2013解决C语言竞赛题之1053洗牌
题目 解决代码及点评 /* 功能:洗扑克牌.将54张牌分别编号为1,2,-,54号,并放在数组M中. 洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换: ...
- java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习
package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...
- C++分享笔记:扑克牌的洗牌发牌游戏设计
笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...
- C++走向远洋——67(项目二、洗牌)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- C语言:判断t所指字符串中的字母是否由连续递增字母组成。-判断一个输入的任何整数n,是否等于某个连续正整数序列之和。-将一副扑克牌编号为1到54,以某种方式洗牌,这种方式是将这副牌分成两半,然后将他们交叉,并始终保持编号1的牌在最上方。
//判断t所指字符串中的字母是否由连续递增字母组成. #include <stdio.h> #include <string.h> void NONO(); int fun( ...
- LinkedList存储一副扑克牌,实现洗牌功能。
package cd.itcast.runble; import java.util.LinkedList; import java.util.Random; /** * LinkedList存储一副 ...
- 洗牌算法Fisher-Yates以及C语言随机数的产生
前些天在蘑菇街的面试中碰到一道洗牌的算法题,拿出来和大家分享一下! 原题是:54张有序的牌,如何无序的发给3个人? 这个题是运用经典的洗牌算法完成.首先介绍一种经典的洗牌算法--Fisher-Yate ...
- AS3.0 扑克牌乱序排列法洗牌
package { /* *@ClassName:package::PokerMain *@Intro:这是一个初始化1-52扑克牌,然后进行乱序排列进行洗牌: *@Author:非若 *@Date: ...
随机推荐
- Gestures_Article_4_0
Technical Article Windows Phone 7™ Gestures Compared Lab version: 1.0.0 Last updated: August 25, 201 ...
- Android IOS WebRTC 音视频开发总结(十二)-- sufaceview
谈到音视频不得不谈谈对视频呈现的理解,为了让大家能有一个更好的理解,先看看android里面SurfaceView的原理,后续陆续分享其绘画原理. 说明:本文是转载的,转载自哪里我也不知道,貌似经过很 ...
- Linux 64位编译\链接32位程序
测试机器:Ubuntu14.04 64位 gcc编译32位程序,添加参数-m32: $ gcc -c -fno-builtin -m32 TinyHelloWorld.c ld链接32位代码,添加参数 ...
- c#学习之Socket网络编程
我是新手以前没写过博客 希望大家勿喷, 在编写Socket的时候需要导入System.Net.Socket 命名空间.利用该类我们可以直接编写Socket的客户端和服务的的程序了, 这里我们只讲tpc ...
- Vue.js学习 Item9 – 表单控件绑定
基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.根据控件类型它自动选取正确的方法更新元素.尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些 ...
- 利用js+canvas实现的时钟效果图
canvas+js时钟特效 运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果: <!--网页文档的声明--> <!doctype html&g ...
- Lua 的函数库 01
这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1. table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个 ...
- js给php传值
//ajax传值 var str= JSON.stringify(arr1);//数组转string //alert(typeof(str)); $.ajax({ url:'test.php' ,ty ...
- devexpress 数据导入(gridcontrol 导出 csv)
// 1.gridcontrol 导出 csv: DataTable dtbNew = new DataTable(); dtbNew.Columns.Add().GetType()); dtbNew ...
- 使用@media做自适应
@media (min-width: 768px){ //>=768的设备 } @media (max-width: 1199){ //<=1199的设备 }