每日一题-20200405-魔术师

魔术师的猜牌术。魔术师利用一副牌中的十三张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们看看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第一张牌放在这迭牌下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上。第三次数1、2、3,将前两张牌依次放在这迭牌下面,将第三张牌翻过来,正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的?
**输入格式要求:提示信息:“The original order of cards is:”
**输出格式要求:"%d "
程序运行示例如下:
The original order of cards is:1 8 2 5 10 3 12 11 9 4 7 6 13

#include<stdio.h>

int main()
{
int a[14]={0};
int i,n,j=1; 
printf("The original order of cards is:");
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");
}

类型:
转圈圈的题目。
思路:

  1. 思考一下,找规律
  2. 第一次给a[0]赋值,第二次a[1]不赋值,给a[2]赋值
  3. +0+1+2+3…
  4. 把每一个初始化为零,把已知的按顺序赋值。
  5. 数组从零开始计数,本题为了方便思考,所以去掉了a[0]
    注意:
    a[13]在全局变量时会自动初始化

主要就是这个
1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5

发布了18 篇原创文章 · 获赞 0 · 访问量 193

猜你喜欢

转载自blog.csdn.net/weixin_46456339/article/details/105337150