扑克牌的发牌功能,存储,以及显示

/*

功能:实现扑克牌的发牌和存储以及显示牌型

*/

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#define N 54

#define M 17

/*

发牌程序:

花色有红桃,梅花,方块,黑桃

花点有:1,2,3,4,5,6,7,8,9,10,J,Q,K

另点数从1-54;

1  - 13 表示红桃

14 - 26 表示梅花

27 - 39 表示方块

40 - 52 表示黑桃

53 - 54 表示大小王  53 表示小王  54 表示大王

*/

int rand_time1(const void *a,const void *b)

{

srand(time(NULL));

return rand()%54-31;

}

int rand_time2(const void *a, const void *b)

{

return (rand() % 54 - 26);

}

int rand_time3(const void *a, const void *b)

{

srand(time(NULL));

return (rand() % 54 - 39);

}

int rand_time4(const void *a, const void *b)

{

return (rand() % 54 - 13);

}

void newline(int i)

{

if ((i + 1) % 7 == 0)

{

printf("\n");

}

}

void array_s(int * a, int *b, int *c, int *d,int *e)

{

int us1 = 0, us2 = 0, us3 = 0, re = 0;

for (int i = 0;i < N;i++)

{

if (i < (N - 3))

{

if ((i + 1) % 3 == 1)

{

b[us1] = a[i];

us1++;

}

if ((i + 1) % 3 == 2)

{

c[us2] = a[i];

us2++;

}

if ((i + 1) % 3 == 0)

{

d[us3] = a[i];

us3++;

}

}

else

{

e[re] = a[i];

re++;

}

}

}

void compare(int a)

{

int b = a % 13;

if (b > 0 && b < 11)

{

printf("%d\t",b);

}

else if (a % 13 == 0)

{

printf("K\t");

}

else if(a % 13 == 12)

{

printf("Q\t");

}

else

{

printf("J\t");

}

}

void show(int *a,int n)

{

for (int i = 0;i < n;i++)

{

if (a[i] > 0 && a[i] <= 13)

{

printf("红");

compare(a[i]);

newline(i);

}

else if (a[i] <= 26)

{

printf("梅");

compare(a[i]);

newline(i);

}

else if (a[i] <= 39)

{

printf("方");

compare(a[i]);

newline(i);

}

else if (a[i] <= 52)

{

printf("黑");

compare(a[i]);

newline(i);

}

else if (a[i] <= 53)

{

printf("小王\t");

newline(i);

}

else

{

printf("大王\t");

newline(i);

}

}

}

int main(int argc, char **argv)

{

int a[N];

for (int i = 0;i < N;i ++ )

{

a[i] = i+1;

}

qsort(a, N, sizeof(int), rand_time1);

qsort(a, N, sizeof(int), rand_time2);

qsort(a, N, sizeof(int), rand_time3);

qsort(a, N, sizeof(int), rand_time4);

int user1[M],user2[M],user3[M],rest[N-3*M];

array_s(a, user1, user2, user3, rest);

putchar(‘\n‘);

puts("玩家1:");

show(user1, M);

printf("\n\n\n");

puts("玩家2:");

show(user2, M);

printf("\n\n\n");

puts("玩家3:");

show(user3, M);

printf("\n\n\n");

puts("余牌:");

putchar(‘\n‘);

show(rest, N - 3 * M);

putchar(‘\n‘);

system("pause");

return 0;

}

欢迎大家提出意见和好的改进方法哈,自学中,望大家提点

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 23:20:03

扑克牌的发牌功能,存储,以及显示的相关文章

UTF8存储与显示

存储肯定是二进制存储,同一个字符(汉子)在不同的字符集下有对应的值,一个字符集相当于一个密码表,键名为字符,键值为二进制数(可表示为十进制,十六进制) UTF8是一个unicode字符集的编码规则,也可以看做是根据unicode字符集根据一个规则计算出的另一个字符集.但是从字符集的原始含义区分来说,uft8只是一种编码unicode的规则.例如:汉子“一”,utf8对应的值为14989440,十六进制为0xE4B880,二进制为    1110 0100 1011 1000 1000 0000共

极客编程小挑战#29:实现手机上常见的某一功能的效果显示

本期挑战: 实现手机上常见的某一功能的效果显示.可以是某个按钮的显示效果,页面跳转的显示效果,二级菜单的出现方式等.可以做已有的效果,也可以发挥你的想象,做出你期待的手机功能效果. 提交方式: 录制代码编写过程或最终代码:点击开始 跟帖发布代码预览地址(使用GB按钮可以直接嵌入发帖回复中):演示地址 [强烈提醒]尽量通过添加课程,在本文评论中附上链接的方式提交答案,有特别奖励- [强烈提醒]提交了答案的人,请扫描下图中的二维码,加入微信群,方便工作人员进行信息统计 本期礼品: 感谢美团云提供10

xcode6 beta 中智能提示(自动完成)功能有时不显示的问题

xcode6 beta 中智能提示(自动完成)功能有时不显示的问题      周银辉 xcode6 beta 中智能提示(自动完成)功能有时不显示,这让人很郁闷啊,网上老外的视频中看人家用的好好的. 原来是一个bug,解决方案是:把代码文件中的中文字符全部删掉. xcode6 beta 中智能提示(自动完成)功能有时不显示的问题

.net工作流引擎ccflow开发平台属性功能的隐藏显示介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明  工作流设计 工作流快速开发平台   业务流程管理   bpm工作流系统  java工作流主流框架  自定义工作流引擎 应用背景: 驰骋工作流系统大大小小的功能高达2000多项,所以不是多有的功能都能被企业所使用的,为了系统的简介他们需要隐藏一些暂时用不到的功能,但是一段时间后可能就需要某些原来隐藏掉的功能,所以单纯的从代码里隐藏是不够理想的,这时候就需要做一个同意管理的功能来自由处

扑克牌的排序版本(制造扑克牌,发牌)

import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map; public class practice01 { public static void main(String[] args) { //封装扑克牌,四种花色 String[] colors={"?","?","

stc89c52开发板遥控器解码 红外线发射 内置 eeprom 存储 串口显示编码

单片机,大概三年前,就买了一本 <爱上单片机> 最后就学会,用面包板了,编程书上基本没讲. 看原理图,看时序图,看数据手册, 都没讲. 而且书上自带的代码写的很烂. 1,缩近控制不好 2,命名混乱 3,做if 的时候 不变的常量放在左侧,这是很基本的约定 ... 最后,还是什么也没有学会. 直到去年,开始学 ARM 了. 学完了 ARM 前面发的(s3c2440)以后, 在回头看单片机,发现单片机真是,简单的不得了! 但是也发现,单片机,不如 ARM 功能强大.速度也慢.很多控制器,没有,要用

夺命雷公狗---Thinkphp----8之栏目功能的分页显示

我们开始在列表页写我们的分页功能,我们直接将刚才取的列表页改写下即可: public function lists(){ //$type = M('Type')->select(); //$this -> assign('type',$type); //$this -> display(); //1.显示分页工具条 $mod = M('Type'); $totalRows = $mod->count(); //创建分页对象时,分页对象需要总记录数和分页条数 $page = new

ztree实现权限功能(横向显示)

最近在做权限功能的时候,采用的ztree实现的,但是产品要求最后一层的权限节点要横向显示.开始在网上找的解决方案是用css样式把最后一层的display设置为inline.在我本地电脑上看了下.效果不错. 但是,后来测试在用十年前的笔记本测这个功能的时候,发现特别的卡,导致浏览器都崩溃了.所以,性能优化开始了. 1.同步改为异步,虽然不卡,但是功能不满足,很多人勾选了一个父节点(模块节点),就保存,此时子节点根本没有,所以保存的数据是有问题的. 2.设置showIcon和showLine为fal

基于stm32f4的ucGUI通过外部flash存储汉字库显示任意英文字符和汉字组合(控件可用)

在做一个用到ucGUI的项目的时候要用到不定的汉字和英文字符,但是ucGUI本身又不支持读取芯片外部flash的字库来显示,于是查了下资料,如下: http://www.cnblogs.com/hiker-blogs/archive/2013/01/04/2843538.html 站在巨人的肩膀上,我找到了将汉字库写进flash后,通过ucGUI的控件显示出来的方法,但是至此,并不能在一个字符串里添加汉字和英文,用于同时显示,因为flash里面没有英文字符的模. 为了让一个控件同时显示汉字和英文