c++编程,扑克牌洗牌,将一副扑克牌随机洗好,顺序输出54张扑克牌,求完整代码?注:用C++写
发布网友
发布时间:2022-05-29 18:47
我来回答
共4个回答
热心网友
时间:2023-11-05 09:10
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <time.h>
using namespace std;
// 输出辅助
const string strtype[6] = {"方块", "梅花", "红心", "黑桃", "小王", "大王"};
const string strnum[14] = {"", "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
struct Card
{
// type是花色,0~3分别表示不同的花色,4是小王,5是大王
// num是牌上的数字
int type, num;
}dat[54];
int main()
{
// 时间随机函数
srand((unsigned)time(NULL));
int cnt = 0;
for (int i = 0; i < 4; i ++)
for (int j = 1; j <= 13; j ++)
{
dat[cnt].type = i;
dat[cnt ++].num = j;
}
dat[cnt ++].type = 4;
dat[cnt ++].type = 5;
for (int i = 1; i < 54; i ++)
// 交换函数,可以证明这样交换出来的数列是随机的
// 这里就不展开了
swap(dat[i], dat[rand() % i]);
// 输出
for (int i = 0; i < 54; i ++)
{
cout << strtype[dat[i].type];
if (dat[i].type < 4) cout << strnum[dat[i].num];
cout << ' ';
}
cout << endl;
system("pause");
}
我测试过啦,运行的一次结果如下(当然是随机的):
方块10 黑桃6 梅花9 红心6 方块J 黑桃A 方块4 梅花3 黑桃K 梅花4 方块K 方块5 方块2
黑桃Q 方块A 红心K 梅花K 黑桃10 红心10 红心3 黑桃2 红心2 黑桃8 小王 方块Q 红心J
梅花6 梅花Q 红心9 方块7 梅花7 方块9 梅花J 红心A 红心4 大王 红心Q 红心8 方块6 黑
桃J 方块8 梅花A 方块3 红心7 黑桃7 梅花10 梅花2 黑桃5 红心5 黑桃3 黑桃9 黑桃4 梅
花5 梅花8
请按任意键继续. . .
希望能够帮到你!
热心网友
时间:2023-11-05 09:11
#include<iostream>
#include<string>
#include <random>
using namespace std;
int main() {
const int color = 4;
const int one_poke = 13;
string poke[52];
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 14; j++) {
poke[13 * (i - 1) + (j - 1)] = to_string(i) + " " + to_string(j);
}
}
int count[52];
for (int i = 0; i < 52; i++) {
count[i] = 4;//几副牌
}
const int pokesNum = 208;//几副牌的张数
string pokes[pokesNum];
for (int i = 0; i < 208; i++) {
int ran = rand() % 52;
if (count[ran] == 0 && ran == 51) {
i--;
continue;
}
if(count[ran] == 0) {
i--;
continue;
}
pokes[i] = poke[ran];
count[ran]--;
}
for (int i = 0; i < 208; i++) {
cout << pokes[i] << endl;
}
getchar();
getchar();
}
热心网友
时间:2023-11-05 09:11
i = 0;
while(i < 54)//54张
{
r=取随机数();
if(a[r] != 0)
{
continue;
}
a[r] = i;
i++;
}
热心网友
时间:2023-11-05 09:12
我凑 = =! 入职培训的吧? 哈哈
编写C语言程序,模拟将一副扑克牌54张随机分给4个人 (如何表达不同花色和...
int poke[13][4],joker[2],last_four_card[4]; //定义四类十三张牌、双王 int i,j,card,count,tank[54],player[20],computer[2][20];bool flag;srand(time(NULL)); //初始化随机种子 for(i=0;i<54;i++)tank[i]=-1; //初始化容器 for(i=0;i<54;i++){ flag=1;while(...
...1) 洗牌功能 2) 发牌功能: 54张牌,随机发给4个玩家,要求显示各玩 ...
int main(void){ int poker[N + 1];int i, j, tmp, remain;/* 初始化阵列 */ for (i = 1; i <= N; i++){ poker[i] = i;printf("%d ", poker[i]);} printf("\n");srand(time(0));/* 洗牌 */ for (i = 1; i <= N; i++){ j = rand() % N + 1;tmp...
C语言编程——发牌洗牌模拟,求帮助
enum { posA, posB, posC, posD};//定义好每个人的位置 struct Postion { struct CARD getcard[25];//每人获得的牌 };struct Postion postion[4];//分配四个位置 struct CARD leftCard[8]; //底牌 struct CARD card[54]; //54张牌 char *suit[]={"Spades","Hearts","Clubs","Diamon...
用C语言编写一个52张扑克牌随即洗牌的程序 并写上注释
定义一个int p[52],里面的元素就是1~52,然后,直接 for循环i:1~52,每次随机一个数 m=rand()%52 ,swap(p[i],p[m]),就ok了
如何求C语言扑克牌洗牌发牌,发的牌要从大到小排序,每个部分都要用
char hx[]={"JQKA"}; // 对应11,12,13,14共四张大于10的牌符号 //生成顺序扑克牌数组: 1~52,梅花1~13,红心14~26,方块27~39,黑桃40~52 void newDeck(int *a) { int i; for ( i=0;i<N;i++ ) a[i]=i+1; } //洗牌,将花色和顺序打乱 void Shuffle(int *a) { ...
C语言,写程序实现一堆扑克牌的排序。
i=j-1;} } int main(){int a[52],i,j,t;srand(time(0));for(i=0;i<52;i++)a[i]=i;for(i=51;i>1;i--)//洗牌、发牌(0~12为第一人,13~25为第二人。。。){j=rand()%(i+1);t=a[i];a[i]=a[j];a[j]=t;} for(i=0;i<4;i++) //排序 sort(&a...
...显示花色和编号的扑克牌,并实现对这副扑克牌洗牌、整牌和发牌三个...
void xipai() //洗牌全局函数 { srand( time(NULL) ); //设置种子 for(int i=0; i<54 ; i++){ int position = rand()%54;int temp=g_cards[i]; //与牌的下标进行互换 g_cards[i]=g_cards[position];g_cards[position]=temp;} } void showCards() //显示全局...
c++ 扑克牌洗牌发牌模拟
;}}}void Poker::ShowPoker( const char* pokerBuff,int size){for( int i=0;i<size;++i ){if( *(pokerBuff+i)=='1' ){SHOW_10();}else{printf("%c ",*(pokerBuff+i));}}}// Deal Cards To The Player// @playerPokerBuf the buffer of the playing player// @len the...
...52张扑克牌随机洗牌并输出#include<stdio.h
for(i=1; i<=N; i++) { if(i%13==0)poker[i]=13; else poker[i]=i%13; } 输入牌错误
模拟扑克牌的洗牌过程
define n 54 /* 总牌数 */ /* 交换前后两组牌 */ void SwapTwo(int d[]){ int i, t;for (i = 0; i < n/2; i++) { t = d[i];d[i] = d[i + n/2];d[i + n/2] = t;} } /* 交错牌 */ void Interleaving(int d[]){ int i, t;for (i = 0; i <...