以前用C++写的洗牌和发牌的程序

C++模拟三国杀洗牌发牌:信奥P2348题解与编程实战 在编程学习和算法竞赛中,模拟类问题是将现实世界规则转化为计算机逻辑的重要桥梁。其核心原理在于通过数据结构(如数组、向量)和流程控制(循环、条件判断)来精确描述和再现一个动态过程。掌握模拟技术不仅能巩固编程基础,更能培养系统性的问题拆解与逻辑建模能力,这种能力在游戏开发、系统仿真和事件处理等工程实践中价值巨大。本文以信息学奥赛(信奥)经典题目P2348为例,聚焦【C++】和【vector】这两个关键技术点,深入讲解如何用C++标准库高效实现卡牌游戏的洗牌与发牌逻辑,将抽象的游戏规则转化为清晰、可执行的代码,为 阅读详情

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>

int pk[]={501,502,
          101,102,103,104,105,106,107,108,109,110,111,112,113,
    201,202,203,204,205,206,207,208,209,210,211,212,213,
    301,302,303,304,305,306,307,308,309,310,311,312,313,
    401,402,403,404,405,406,407,408,409,410,411,412,413};
int a[14],b[14],c[13],d[13];

class pack
{
public:
 void makepack();
 void fapack();
 void disp();
};

void pack::makepack()
{
 int temp,r,times;
 cout<<"/n 洗牌次数:";
 cin>>times;
 cout<<endl;

 for(int j=0;j<=times;j++)
 {
  for(int i=0;i<53;i++)
  {
   r=int(float(53-i)*rand()/RAND_MAX)+1;
   temp=pk[i];
   pk[i]=pk[r];
   pk[r]=temp;
  }
 }
}

void pack::fapack()
{
 int i,j;
 j=0;
 cout<<"正在发牌..."<<endl;
 for(i=0;i<=53;i++)
 {
  a[j]=pk[i];
  i++;
        b[j]=pk[i];
  i++;
  if(j<=12)
  {
   c[j]=pk[i];
   i++;
   d[j]=pk[i];
  }
  if(j>12)
   i++;
  j++;
 }
}

void pack::disp()
{ 
 cout<<"a的牌是:";
 for(int i=0;i<14;i++)
  cout<<a[i]<<",";
 cout<<endl;

 cout<<"b的牌是:";
 for(i=0;i<14;i++)
  cout<<b[i]<<",";
 cout<<endl;

 cout<<"c的牌是:";
 for(i=0;i<13;i++)
  cout<<c[i]<<",";
 cout<<endl;

 cout<<"d的牌是:";
 for(i=0;i<13;i++)
  cout<<d[i]<<",";
 cout<<endl;
}

int main()
{
 cout<<"==============模拟洗牌&&发牌==============="<<endl;
 cout<<"=说明:                                           ="<<endl;
 cout<<"=    以5开头的为鬼                        ="<<endl;
 cout<<"=    以1开头的为红桃                      ="<<endl;
 cout<<"=    以2开头的为方块                      ="<<endl;
 cout<<"=    以3开头的为葵扇                      ="<<endl;
 cout<<"=    以4开头的为草花                      ="<<endl;
 cout<<"==========================================="<<endl;

 pack mypack;
 mypack.makepack();
 mypack.fapack();
 
 cout<<endl;

 mypack.disp();

 getchar();
 return 0;
}

模拟洗牌与发牌程序用C++写的 C++写的一个很简单的小程序。功能是模拟洗牌与发牌,总共54张牌 立即下载

相关推荐

C语言模拟发牌

#include "poke1.txt" #include "poke2.txt" int main() { char f; Player p[4]; Init_Player(p); handout(p); Print(p); printf("\n\n按ENTER键验证发牌结果"); f=getchar(); if(f!=27) inspection(c); system("pause"); return 0; }

C++模拟斗地主发牌

具体思想: 1、定义一个string字符串 hand[]来表示1副扑克牌,定义时不能随便定义,需要考虑到后面需要用到这些串进行比较排序,如果没有规则的定义字符串来表示54张牌,到后面进行比较排序时就可能出错。 例如: 刚开始,我使用 "0x01","0x02","0x03","0x04","0x05","0x06","0x07","0x08","0x09","0x0A","0x0B","...

t18473984063的博客 1611

扑克牌游戏

简单程序设计题,编写一个扑克牌游戏,用计算机模拟洗牌,分发给四个玩家并将四个玩家的牌显示输出,并进一步设计,玩家的牌按照排序算法从小到大依次排序,并显示输出。 提示:用一维数组Card随机存放52张牌(不考虑大小王),用二维数组Player存放四个玩家的牌,用三位整数表示牌的种类,后两位表示牌号。 例如:101,102,103……,113分别表示红桃A,红桃2,……红桃K

斗地主发牌算法之c++(初级)

这篇只是介绍简单的斗地主54张牌发牌算法,后边文章还会介绍控制玩家手上炸弹个数的算法

兵仔贾---的专栏 8249

别再让OCV拖慢你的芯片!手把手教你用set_timing_derate优化STA时序(附CPPR实战)

本文深入探讨了芯片设计中OCV(On-Chip Variation)对时序分析的影响,并提供了使用`set_timing_derate`优化STA时序的实战指南。通过分阶段derate设置和CPPR技术,有效减少时序违例,提升芯片性能。文章结合TSMC 7nm工艺案例,详细解析了OCV建模与优化策略,助力工程师实现时序收敛。

weixin_42525005的博客 304

ros2 humble cartographer 2D激光雷达建图

Cartographer是一个支持多平台和传感器配置的SLAM的系统。 本文主要讲述在ros2 humble系统上cartographer的安装方法,以及如何配置参数实现自己的ros2 bag包的离线建图。

weixin_43087302的博客 6938

一个c++编写的斗地主游戏,C++超级高手成长之路!

欢乐斗地主这个游戏玩的人很多,但是真正玩的好玩家却很少。为什么这么说呢?平时所谓的会斗地主只不过是勉强懂得了规则,会出牌,而要达到真正的水平,则需要很多大部分人都不会的技巧,甚至把它们养成习惯。 斗地主是大众游戏,玩法简单,花样多,因为一些主播的原因,最近在线人数一加在加,是当前最火的一款游戏。 2天时间敲了一个斗地主代码,觉得自己代码极不规范,决定重构,目标是用...

2845

车载测试面试题总结

首先确认是什么问题,如果是测试软件的问题就先确定自己的测试方法有没有问题,如果没有问题,那就是测试软件的问题,这时候就需要提bug 进行跟踪,(比如BCM测试的时候,先明确测试的输入,对输入)进行需求分析,然后设计测试用例,进行用例评审,评审完执行测试用例形成最终的版本,台架分为:hil(黑尔)台架,单个控制器的台架、整车台架、车身台架、动力系统台架等,主要验证其功能,或者实车无法满足的测试环境。这个人不可能一直,点击几千次或者多少次几个小时连续点击,人不可能一直在点。因为要模拟一下这个稳定性,

woaxiaoqing的博客 7813

斗地主程序(C++版)

static const string rankStr[] = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2", "小王", "大王"};cout << name << " 出了: " << play[0].toString() << endl;cout << "\n--- " << cur->name << "的回合 ---" << endl;cout << name << " 叫地主" << endl;

2401_86687927的博客 1300

基于STM32环境温湿度监测系统设计

基于STM32环境温湿度监测系统设计1. 实验目的2. 任务和要求3. proteus仿真图4. 实验代码 1. 实验目的 (1) 掌握使用 KEIL MDK5 进行软件开发的具体流程; (2) 掌握硬件电路的设计方法; (3) 掌握 STM32 微控制器的程序设计及代码编写方法。 2. 任务和要求 (1)在 STM32F103 平台下,通过温度传感器 DS18B20 和湿度传感器 DHT11 实现环境温湿度信息的采集; (2)将温度传感器和湿度传感器所采集的数据在 LCD 液晶屏幕上显示出来,超

唯一的博客 2万+

Cadence仿真MOS电容C-V曲线:从电路图到参数扫描的完整流程

本文详细介绍了使用Cadence Virtuoso仿真MOS电容C-V曲线的完整流程,从电路图绘制到参数扫描,再到结果分析与问题排查。通过实际案例和实用技巧,帮助工程师快速掌握MOS电容特性分析的关键步骤,提升集成电路设计效率。

weixin_29271263的博客 431

c语言发牌器(斗地主)

问题描述: 模拟斗地主开场前的发牌工作。扑克牌:54张,抽出3张底牌,剩余51张随机轮流发给三位玩家 问题分析: 初始化扑克牌 按顺序将54张扑克牌初始化 牌号:A,2,3,4,5,6,7,8,9,10,J,Q,K(大王:B,小王:S) 图形:ASCII码的3 4 5 6 ...

weixin_55573591的博客 3792

【Spreadsheet】香港规范结构设计电子表格库开发方案

深入理解香港本地规范特点和要求结合国际先进标准(Eurocode) 的技术内容考虑香港地理环境特殊性 (台风、地质等)建立完善的质量控制体系保持持续更新维护的能力。

hmywillstronger的博客 1361

【题目】用C语言编写洗牌发牌程序

目录用C语言编写洗牌发牌程序题目要素提取补充思路可能出现的问题代码程序运行图片 用C语言编写洗牌发牌程序 题目 现在只有一套扑克牌中52张副牌(无大王小王),包含了4种花色的牌 现在打乱顺序后分给甲乙丙丁四人 全部分配完毕后,输出甲乙丙丁四人所获得的扑克大小及花色 再经过排序,将甲乙丙丁四人的牌按由大到小顺序输出到屏幕上 要素提取 略 补充 牌面上的数字/字母由小到大为: 3 4 5 6 7 8 ...

大道隐迹 2107

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5382

解决QT5调用软键盘qvirtualkeyboard时崩溃问题ime_pinyin::MatrixSearch::init_user_dictionary

但是偶尔也会出现问题,譬如,我这边在Arm系统上跑着程序的时候,点击用户编辑框,输入法弹出,但是再次点击密码输入框,连程序都给我崩溃了。只是提示错误:void ime_pinyin::MatrixSearch::init_user_dictionary。首先确保你的Arm版QT库已经编译了软键盘,位置有时候就和lib同级目录,qtvirtualkeyboard。QT5中的软键盘qvirtualkeyboard很好用,很多人开发嵌入式端应用的时候都会用到。此外还有很多其他的输入法字典,像。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 2062

C语言实现洗牌发牌程序,用C语言实现的扑克牌洗牌程序

一副牌:54张从0开始排序:0-12表示黑桃 A 1,2,3,... 10,J,Q,K13-25表示红桃 A 1,2,3,... 10,J,Q,K26-38表示草花 A 1,2,3,... 10,J,Q,K39-51表示方块 A 1,2,3,... 10,J,Q,K52,53表示大小王#include void shuffle(char *porker){/*将存放数组初始化为1-54*/fo...

weixin_42470300的博客 4127

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++模拟洗牌发牌(带花色)

模拟洗牌发牌

weixin_43034048的博客 751

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C++实现洗牌算法!

wangshiyang的专栏 3107

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

扑克牌发牌程序设计

本程序实现了一般扑克牌游戏的洗牌、发牌和理牌过程,程序模拟了对四个玩家的发牌,且能让各自玩家按大小顺序整理自己的手牌。牌的大小顺序按斗地主的规则(但无大小王)。 本程序定义了一个牌的结构体,其成员变量是两个字符指针。一个指向点数的字符数组,另一个指向花色的字符数组。考虑到牌的整理需要比较两张牌的大小,而字符不太好比较,从而构造了一个辅助函数Value来实现将字符转换为整数。程序得最后还对桌牌和手牌进行了检测,看是否有重复的牌。

3227

洗牌、发牌过程模拟

/*  洗牌、发牌过程模拟  假设一副牌没有大小王,有四种花色,每一种有13张,轮流发牌.*/#include #include #include using namespace std;enum style {RedPeach=6,BlackPeach=3,Club=5,Pane=4};const char* Replace(char ch);struct Card{     char  Val

十年寒窗无人问 1625

纸牌发牌程序,数据结构

一下是一个纸牌发牌游戏。其中函数及其思路皆为个人所写。虽然我不知道别人会不会跟我一样。但是这个我确实是从头到尾独立思考。我的个人准则是,能想出来的,绝不找度娘。 #include #include #include using namespace std; int pk[53]={0, 101,201,301,401, 102,202,302,402, 103,203,303,40

qq_32592689的博客 1045

Java程序模拟洗牌与发牌的过程

Java课的课后作业题,还是挺好写的。 由于题目中只说了52张牌,就没加大王小王~~ 本来半个小时就能用C++模拟完的程序,结果硬生生地用Java写了一早晨! 鱼与熊掌不可兼得啊- package mypro01; import java.util.*; class Card { private String color;//颜色(红桃,黑桃,梅花,方块) privat...

Akatsuki 3463

C语言 模拟扑克牌新牌洗牌与发牌

新概念发牌

weixin_61905321的博客 5360

java洗牌发牌实验_java_Java实现洗牌发牌的方法,本文实例讲述了Java实现洗牌发 - phpStudy...

Java实现洗牌发牌的方法本文实例讲述了Java实现洗牌发牌的方法。分享给大家供大家参考。具体如下:import java.util.*;public class Main {/*** @param args the command line arguments*/static int numbersOfPlayers = 4;static int numbersOfHandCard = 13;p...

weixin_39894778的博客 145

神级程序员教你c++实现扑克牌游戏!亲测可用

这篇文章主要为大家详细介绍了C++扑克牌的洗牌发牌游戏设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 小编在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏。具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌。然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等。 下面是c/c++资料,加小编C/C++编程学习群:825414254获取! 小编在学...

7288
上一篇: 用C写的压大小的小程序
下一篇: 网页刷新器
jesters
博客等级 码龄22年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值