用c语言解决以下问题:魔术师的猜牌术。魔术师利用一副牌中的十三张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们看看。魔术师将最上面的那张牌数为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 (部分数值用*代替)
时间: 2024-02-29 08:53:15 浏览: 198
以下是用C语言解决该问题的代码:
```c
#include <stdio.h>
int main() {
int cards[13], count;
printf("The original order of cards is:");
for(int i = 0; i < 13; i++) {
cards[i] = i + 1; // 初始化牌的顺序
printf("%d ", cards[i]); // 打印原始次序
}
printf("\n");
for(int i = 0; i < 13; i++) {
count = cards[i]; // 获取需要翻牌的次数
for(int j = i+1; j < 13; j++) {
cards[j-1] = cards[j]; // 将需要翻牌的牌移到最上面
}
cards[12] = count; // 将需要翻牌的牌放到最下面
}
printf("The final order of cards is:");
for(int i = 0; i < 13; i++) {
printf("%d ", cards[i]); // 打印最终次序
}
printf("\n");
return 0;
}
```
首先定义一个长度为13的数组cards来记录牌的顺序,初始化为1~13。然后按照题目描述的规则进行翻牌,将需要翻牌的牌移到最上面,将需要翻牌的牌放到最下面。最后打印出原始次序和最终次序。
阅读全文