魔术师的猜牌术
2022年 05月 08 日

BIGFISH

[blockquote2 name='签名']
魔术师的猜牌术。魔术师利用一副牌中的十三张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们看看。魔术师将最上面的那张牌数为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 * 10 * 12 11 * * 7 6 13
(部分数值用*代替)

[/blockquote2]

# include 

int main(void)
{
	int k[14] = { 0 };
	int a, b, c, m, n, p = 1;;
	b = 1; //1  02  003 0004   1  3  6  10  
	c = 1;  // 1 2 3 4 5 6

	for (a = 1; a <= 13; a++)
	{
		k[b] = c;
		c += 1; //7
		for (n = 1;n <= c && c < 14;n++)
		{ //12
			b++;
			if (b > 13)
			{
				b = b - 13;
			}
			if (k[b])
			{
				n--;
			}
			//printf("%d\n", n);
			
		}
	}
	for (a = 1; a <= 13; a++)
	{
		printf("%d", k[a]);
	}

};
#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;
}

魔术师的猜牌术

[blockquote2 name='签名']
魔术师的猜牌术。魔术师利用一副牌中的十三张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们看看。魔术师将最上面的那张牌数为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 * 10 * 12 11 * * 7 6 13
(部分数值用*代替)

[/blockquote2]

# include 

int main(void)
{
	int k[14] = { 0 };
	int a, b, c, m, n, p = 1;;
	b = 1; //1  02  003 0004   1  3  6  10  
	c = 1;  // 1 2 3 4 5 6

	for (a = 1; a <= 13; a++)
	{
		k[b] = c;
		c += 1; //7
		for (n = 1;n <= c && c < 14;n++)
		{ //12
			b++;
			if (b > 13)
			{
				b = b - 13;
			}
			if (k[b])
			{
				n--;
			}
			//printf("%d\n", n);
			
		}
	}
	for (a = 1; a <= 13; a++)
	{
		printf("%d", k[a]);
	}

};
#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;
}

赞 (0)

猜您想看

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论