魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手上的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始顺序是怎样安排的?

*问题分析与算法设计

题目已经将魔术师出牌的过程描述清楚,我们可以利用倒推的方法,很容易地推出原来牌的顺序。

人工倒推的方法是:在桌子上放13空盒子排成一圈,从1开始顺序编号,将黑桃A放入1号盒子中,从下一个空盒子开始对空的盒子计数,当数到第二个空盒子时,将黑桃2放入空盒子中,然后再从下一个空盒子开始对空盒子计数,顺序放入3、4、5...,直到放入全部3张牌。注意在计数时要跳过非空的盒子,只对空盒子计数。最后牌在盒子中的顺序,就是魔术师手中原来牌的顺序。

这种人工的方法是行之有效的,计算机可以模拟求解。

*程序说明与注释

#include

int a[14];

int main()

{

int i,n,j=1; /*j:数组(盒子)下标,初始时为1号元素*/

printf("The original order of cards is:");

for(i=1;i<=13;i++) /*i:要放入盒子中的牌的序号*/

{

n=1;

do{

if(j>13) j=1; /*由于盒子构成一个圈,j超过最后一个元素则指向1号元素*/

if(a[j]) j++; /*跳过非空的盒子,不进行计数*/

else{ if(n==i) a[j]=i; /*若数到第i个空盒子,则将牌放入空盒中*/

j++;n++; /*对空盒计数,数组下标指向下一个盒子*/

}

}while(n<=i); /*控制空盒计数为i*/

}

for(i=1;i<=13;i++) /*输出牌的排列顺序*/

printf("%d ",a[i]);

printf("“n");

}

*运行结果

The original order of cards is:1 8 2 5 10 3 12 11 9 4 7 6 13

c语言实例 魔术师的猜牌术(1),C语言实例:魔术师的猜牌术(1)相关推荐

  1. c语言中猜字母代码怎么打,C语言代码实现猜数字

    本文实例为大家分享了C语言代码实现猜数字的具体代码,供大家参考,具体内容如下 题目描述 猜数字游戏,顾名思义,就是需要人们猜测一个未知但已确定的数.其中,这个未知但要确定的数就要由编写程序随机来产生, ...

  2. 统计一段英文中单词的个数c语言,C语言统计一篇英文短文中单词的个数实例代码...

    具体代码如下所述: #include #define N 1000 void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个 ...

  3. 上海应用技术学院c语言实验报告9,上海工程技术大学C语言实验报告

    <上海工程技术大学C语言实验报告>由会员分享,可在线阅读,更多相关<上海工程技术大学C语言实验报告(7页珍藏版)>请在人人文库网上搜索. 1.实 验 报 告高级语言程序设计20 ...

  4. c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例

    详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...

  5. java跳转控制语句有哪些_Java语言基础学习之流程控制语句和跳转控制语句实例分析...

    本文主要向大家介绍了Java语言基础学习之流程控制语句和跳转控制语句实例分析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.流程控制语句 在一个程序执行的过程中,各条语句的执行顺 ...

  6. C语言习题:猜数字游戏(C语言随机数)

    C语言习题:猜数字游戏(C语言随机数) 需要了解C语言随机数的生成方法: 在C语言中比较常用的随机函数是 rand 函数,它可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同 ...

  7. c语言比较函数memcmp,c语言函数memcmp()如何比较内存前n个字节实例源码介绍

    c语言函数memcmp()如何比较内存前n个字节实例源码介绍.引入头文件:#include 定义memcmp()函数:int memcmp (const void *s1, const void *s ...

  8. 上海工程技术大学c语言试卷,上海工程技术大学2009_2010C语言试卷A.doc

    上海工程技术大学2009_2010C语言试卷A PAGE PAGE 6 (勤奋.求是.创新.奉献) 2009-2010(1)C语言试卷A 课程序号___________ 班级 __________ 学 ...

  9. c语言远控,远控鼠标!C语言简单编程:整舍友必备+附送实例源码!

    远控鼠标!C语言简单编程:整舍友必备+附送实例源码!-1.jpg (10.71 KB, 下载次数: 0) 2018-10-11 05:24 上传 关注<一碳科技>有更多干货等着你哦! 远控 ...

最新文章

  1. js for foreach 快慢_js基本搜索算法实现与170万条数据下的性能测试
  2. 什么是 Python?我介绍我几年前学习Python的方法和经验
  3. MDI窗体容器和权限设置.avi
  4. The engine “node“ is incompatible with this module
  5. macOS 安装 Win11 常见问题及解决方案
  6. 嵌入式开发笔记——调试组件SEGGER_HardFaultHandle
  7. java保留字详解_保留字
  8. Django之wagtail安装及配置
  9. Thief Book - 上班摸鱼偷偷看小说的利器
  10. 从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座
  11. 上货避坑指南 私域上货选品工具 无货源选品上货 采集商品详情数据API分享 详情图 sku信息
  12. windows网络编程 ---网络聊天室(1)
  13. 基于STM32U5片内GPDMA Burst传输应用示例
  14. 电话聊天狂人(java)
  15. ZYNQ之路--搞清楚Xilinx开发软件之间的关系
  16. 广州电信宽带的四大优势
  17. LTE中RB、RBG、CCE、REG
  18. 宝宝红屁股都怪纸尿裤? 先看看你有没有做好这2点
  19. 什么是科技项目验收测试?验收测试报告怎么出具?
  20. FlatBuffer 使用

热门文章

  1. 跑faster-rcnn pytorch版本踩的坑
  2. APISpace 中文简繁转换API
  3. 解决unrecognized relocation (0x2a) in section `.text`
  4. 80后青海“拉面王子”的一碗“致富面”
  5. ARduino接KY-040电位编码器
  6. code文件服务器异常怎么处理,服务器启动异常!Code1 Table does not exist(解决办法)...
  7. 关于PyCharm中python模块无法安装的问题
  8. 我们要理智使用计算机英语,新视野大学英语第四册(四级)期末复习重点单词词组句子...
  9. Oracle的 listagg 函数,多行合并一行
  10. wx-sideslip:类似 QQ 通讯录侧滑