您的位置:首页 > 编程语言

(百例编程)86.自动发牌

2013-01-25 22:07 302 查看
题目:一副扑克有52张牌,打桥牌时应将牌分给四个人。 请设计一个程序完成自动发牌的工作。要求:黑桃用S(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)表示;梅花用C(Clubs)表示。

/*
86.cpp
题目:一副扑克有52张牌,打桥牌时应将牌分给四个人。
请设计一个程序完成自动发牌的工作。要求:黑桃用S
(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)
表示;梅花用C(Clubs)表示。
by as1138 2013-01-25
*/
#include <iostream>
#include <bitset>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main(int argc, char const *argv[])
{
//S 1-k <=> 1-13
//H 1-k <=> 14-26
//D 1-k <=> 27-39
//C 1-k <=> 40-52
bitset<52> bitCard;
char PrintChar[13] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'};
int nCount = 0;
int i = 0;
int j = 0;
int Play[4][13] = {0};
size_t randNum = 0;

srand(time(NULL));
while(nCount < 52)
{
randNum = rand()%52;
if(!bitCard[randNum])
{
nCount++;
bitCard[randNum] = 1;
Play[j++][i] = randNum+1;
j = j%4;
if(nCount%4 == 0)
i++;
}
}//end while(nCount<52)

for (int n = 0; n < 4; ++n)
{
cout<<"Player "<<n+1<<':';
for (int m = 0; m < 13; ++m)
{
if (Play
[m] >0 && Play
[m] <14)
{
cout<<'S'<<PrintChar[Play
[m]-1]<<" ";
}
else if (Play
[m] >13 && Play
[m] <27)
{
cout<<'H'<<PrintChar[Play
[m]-14]<<" ";
}
else if (Play
[m] >26 && Play
[m] <40)
{
cout<<'D'<<PrintChar[Play
[m]-27]<<" ";
}
else if (Play
[m] >39 && Play
[m] <53)
{
cout<<'C'<<PrintChar[Play
[m]-40]<<" ";
}
}
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: