C语言猜牌术代码解析

栏目: C · 发布时间: 5年前

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

问题描述

魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大声数数,你们听,不信?

你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3,这样依次进行,将13张牌全部翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的?

问题分析

题目中描述的内容比较多,但已经将魔术师出牌的过程描述的很清楚了。

假设桌子上有13个空盒子排成一圈,设定其中一个盒子序号为1,将黑桃A放入1号盒子中,接着从下一个空盒子开始重新计数,当数到第2个空盒子时,将黑桃2放入其中。然后再从下一个空盒子开始重新计数,数到第3个空盒子时,将黑桃3放入其中,这样依次进行下去,直到将13张牌全部放入空盒子中为止。需要注意的是,在计数过程中要跳过那些已放入牌的盒子,而只对空盒子计数。最后牌在盒子中的顺序,就是魔术师手中牌的顺序。

算法分析

根据问题分析,使用循环结构来实现程序。使用程序将分析过程模拟出来,就可以计算出魔术师手中牌的原始次序。由于有13张牌,因此显然要循环13次,每次循环时找到与牌序号对应的那个空盒子,因此循环体完成的功能就是找到对应的空盒子将牌存入。

程序流程图:

C语言猜牌术代码解析

下面是完整的代码:

#include

int a[14];

int main()

{

int i, j=1, n;

printf("魔术师手中的牌原始次序是:\n");

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

{

n=1;

do

{

if(j>13)

j=1;

if(a[j])  /*盒子非空*/

j++;

else  /*盒子为空*/

{

if(n==i)

a[j]=i;

j++;

n++;

}

}

while(n<=i);

}

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

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

printf("\n");

return 0;

}

运行结果:

魔术师手中的牌原始次序是:

1 8 2 5 10 3 12 11 9 4 7 6 13 

C语言猜牌术代码解析

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-01/156256.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Bandit Algorithms for Website Optimization

Bandit Algorithms for Website Optimization

John Myles White / O'Reilly Media / 2013-1-3 / USD 19.99

This book shows you how to run experiments on your website using A/B testing - and then takes you a huge step further by introducing you to bandit algorithms for website optimization. Author John Myle......一起来看看 《Bandit Algorithms for Website Optimization》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具