下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

说明:

洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1~N)打乱重新排列,只

不过洗扑克牌多了一个花色判断的动作而已。

解法:

初学者通常会直接想到,随机产生1~N的乱数并将之存入阵列中,后来产生的乱数存入阵列

前必须先检查阵列中是否已有重复的数字,如果有这个数就不存入,再重新产生下一个数,运

气不好的话,重复的次数就会很多,程式的执行速度就很慢了,这不是一个好方法。

以1~52的乱数排列为例好了,可以将阵列先依序由1到52填入,然后使用一个回圈走访阵列,

并随机产生1~52的乱数,将产生的乱数当作索引取出阵列值,并与目前阵列走访到的值相交换,

如此就不用担心乱数重复的问题了,阵列走访完毕后,所有的数字也就重新排列了。

至于如何判断花色?这只是除法的问题而已,取商数判断花色,取余数判断数字,您可以直接

看程式比较清楚。

#include

#include

#include

#define N 52

int main(void)

{

int poker[N + 1];

int i,j,tmp,remain;

// 初始化阵列

for (i = 1; i <= N; i++)

poker[i] = i;

srand(time(0));

// 洗牌

for (i = 1; i <= N; i++)

{

j = rand() % 52+1;

tmp = poker[i];

poker[i] = poker[j];

poker[j] = tmp;

}

for (i = 1; i <= N; i++)

{

// 判断花色

switch ((poker[i] - 1) / 13)

{

case 0:

printf("桃");

break;

case 1:

printf("心");

break;

case 2:

printf("砖");

break;

case 3:

printf("梅");

break;

}

// 扑克牌数字

remain = poker[i] % 13;

switch (remain)

{

case 0:

printf("K ");

break;

case 12:

printf("Q ");

break;

case 11:

printf("J ");

break;

default:

printf("%d ",remain);

break;

}

if (i % 13 == 0)

printf("\n");

}

return 0;

}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

以上是编程之家为你收集整理的C语言经典算法 - 洗牌算法全部内容,希望文章能够帮你解决C语言经典算法 - 洗牌算法所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

洗牌程序c语言原理,C语言经典算法 - 洗牌算法相关推荐

  1. python语言原理_python语言实现

    最近看了看陈儒的<Python源码剖析>,写的很好,这里简单记录下python语言实现的几个点. 1.python对象实现原理 首先说下python中的对象的实现,python中基本所有东 ...

  2. 心形线c语言原理,C语言打印心形(示例代码)

    #include int main() { for (float y = 1.5f; y > -1.5f; y -= 0.1f) { for (float x = -1.5f; x < 1 ...

  3. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

  4. 大前端开发者需要了解的基础编译原理和语言知识

    转自:https://yq.aliyun.com/articles/180879 在我刚刚进入大学,从零开始学习 C 语言的时候,我就不断的从学长的口中听到一个又一个语言,比如 C++.Java.Py ...

  5. 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc

    基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...

  6. 好程序员Java分享SQL语言之索引

    好程序员Java分享SQL语言之索引,前言:本章我们将学习MySQL中的索引,本文将从索引的作用.索引的分类.创建索引的语法.索引的使用策略以及索引的实现原理等方面带大家了解索引. 索引的作用 索引的 ...

  7. 【编译原理】语言认知之Java、Python、C++快速排序三者运行效率与开发效率比较

    [编译原理]语言认知之Java.Python.C++快速排序&三者运行效率与开发效率比较 一.实验目的 二.实验环境 三.实验步骤 四.快速排序程序 五.实验结果 六.总结 一.实验目的 强化 ...

  8. NULL 指针在不同平台下的表现引发程序报错(C 语言)

    NULL 指针在不同平台下的表现引发程序报错(C 语言) 为什么有这篇 正文 1. 使用环境 2.问题描述及展示 3. 走了些弯路 4. 柳岸花明(GDB 调试) 5. 访问 NULL 指针错误背后的 ...

  9. c语言转换为stc程序,STC51单片机入门(C语言)

    以前老资料,可继续下载参考. 目   录 第1篇 单片机KEIL开发环境 第1章  点亮LED实例与经典延时程序介绍(看不懂就从第2章动手) 1.1 51单片机最小系统与芯片引脚图 1.2 点亮LED ...

最新文章

  1. Nginx负载均衡集群介绍
  2. Linux Shell执行原理
  3. 撤销 git commit
  4. 《QML除夕烟花,代码全平台可用》
  5. Android 控件之RatingBar评分条(五星)自定义样式
  6. 玩转mini2440开发板之【制作和修改linux启动logo图片】
  7. 测试管理工具QC第一篇-QC安装步骤(史上最详细的图解过程)-第一篇
  8. vb.net word 自定义工具栏_Word双面快速简捷打印?
  9. CSS3动画的常见属性(CSS3)
  10. nlogn 求最长上升子序列 LIS
  11. location.href参数丢失
  12. 74ls20设计半加器_用74ls138设计全加器
  13. 计算机网络应用层1练习题
  14. python写邮箱系统登录_Python selenium登录163邮箱示例
  15. 大数据必学语言Scala(三十一):scala面向对象 特质(trait)
  16. 华为无线AC配置实例-华为3层ac旁挂+直接转发
  17. 快速入门:Slurm资源管理与作业调度系统
  18. 人工神经网络有哪些应用,人工神经网络包括哪些
  19. InvalidOptions: Requested option conflicts with current storage engine option for directoryPerDB
  20. android p 荣耀v10,荣耀V10和V9哪个好 区别对比分析告诉你

热门文章

  1. 通用文件清除脚本,可对多个指定目录按照磁盘空间、文件保存天数进行清理,并可设置目录扫描深度
  2. python语言控制nao行走
  3. 使用DOM4J解析XML文档,输出所有学员信息和添加学生信息
  4. 重复读取输入流InputStream
  5. 智联招聘再启IPO,它现在有哪些难题?
  6. 蔡徐坤1亿转发量幕后推手“星援app”被端
  7. VUE的十一个生命周期详解
  8. 人生的三重境界(山在那?水在那?)
  9. Panoply地理网格绘制软件
  10. 串口转RS485:自动收发串口转RS485设计注意事项