首页 > 其他分享 >猜牌术

猜牌术

时间:2023-05-02 10:12:01浏览次数:31  
标签:盒子 int ++ 循环 猜牌术 空盒

一、问题描述:

 

二、设计思路:

 

三、程序流程图:

 

 

 

四、代码实现:

#include<stdio.h>
int a[14] = {0};
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)/*判断盒子是否为第i个空盒*/
                    a[j]=i;/*如果是则将i存入*/
                j++;
                n++;
            }
        }
        while(n<=i);
    }
    for( i=1; i<=13; i++ )
        printf("%d ", a[i]);
    printf("\n");
    
    return 0;
}

 说实话,这个题难度不小,因为要求很多,我做的时候不知道怎么用算法表示,还是不够,搜了一下就恍然大悟,我追求循环的步长,发现规律为1,3,6,10......根本就没有规律,导致我做不出来,循环开始处把n的值赋为0,重新计算,n代表空盒,加的是空盒的数量

标签:盒子,int,++,循环,猜牌术,空盒
From: https://www.cnblogs.com/bzsc/p/17367383.html

相关文章

  • 猜牌术
    魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第......
  • 猜牌术
    一问题描述魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二......