扑克牌
一付扑克牌取所有的方块,按1,2,3,…,10,J,Q,K 的顺序从上至下排好,并按下面要求取走牌:翻出最上面一张牌,放到一旁,把第二张牌放到这叠牌的最下面,……,重复上述过程,直到翻完所有的牌。问:
①最后翻出的牌是哪一张?
②如果要求按1,2,3,…,10,J,Q,K的顺序翻出,则原来的牌又应如何排队?
输入文件:无,为评测方便,请读入一个空文件,
输出文件:有二行,第一行是第一问的结果,第二行是第二问的结果,数字间用空格隔开。
#include<iostream>
using namespace std;
void printcard(int a);
int a[13];
int b[13];
int main()
{
int i, j, k, f, c=0;
for(i=0; i<13; i++)
{
a[i] = 0;
b[i] = -1;
}
i = -1;
k = 0;
f = 0;
while(c != 13)
{
i++;
if(i >= 13)
i -= 13;
if(!a[i])
{
if(f%2 == 0)
{
a[i] = 1;
c++;
b[k++] = i;
}
f++;
}
}
printcard(b[12]);
cout<<endl;
for(i=0; i<13; i++)
{
for(j=0; j<13; j++)
{
if(b[j] == i) //b数组保存依次从扑克牌里取出第几张,b[2]的值为4,表示
{ //第2次取出的是原来的第4张牌,序号都是从0开始
printcard(j);
cout<<" ";
}
}
}
return 0;
}
void printcard(int a) //0~12表示扑克牌的 1 到 10 和 J Q K
{
if(a<10)
cout<<a+1;
else if(a==10)
cout<<'J';
else if(a==11)
cout<<'Q';
else
cout<<'K';
}