用C++做下题:有N张写有数据的牌, 从上到下放成一堆,每次从上面取一张输出,再从上面取一张放回这堆牌的下面。重复这个过程,直到取完,发现取出牌上的数字恰巧是1,2,3...,N,问原先N张牌上的数是什么?
时间: 2023-12-11 16:04:50 浏览: 172
以下是用C++实现上述问题的代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入牌的数量n: ";
cin >> n;
// 初始化牌堆
int cards[n];
for (int i = 0; i < n; i++) {
cards[i] = i + 1;
}
// 开始取牌
for (int i = 0; i < n; i++) {
// 取出牌堆顶部的牌
cout << cards[i] << " ";
// 将牌堆顶部的牌放回牌堆底部
cards[n] = cards[i+1];
n++;
}
return 0;
}
```
这个程序的核心是一个循环,每次循环取出牌堆顶部的牌,并将其放回牌堆底部。在循环过程中,我们还需要记录牌堆中牌的数量,以便于将牌放回牌堆的底部。最后,程序输出的就是原先N张牌上的数字。
阅读全文