C语言自动发牌程序,供大家参考,具体内容如下:

一副扑克有52张牌,打桥牌时应将牌分给4个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S (Spaces)表示,红桃用H (Hearts)表示,方块用D (Diamonds)表示,梅花用C (Clubs)表示。

分析:

要设置数组表现扑克牌

要设置数组表现玩家

要给扑克牌做特定标识,得到结果后玩家要知道自己手中黑桃有哪些、方块有哪些

初步想法:

设置4个字符数组保存4种梅花牌,设置4个字符数组表示4名玩家分配到的牌

每张牌随机发给4名玩家,当玩家的持牌数达到13,不再分配给该名玩家牌

代码展示:

void mycode_13(){srand(unsigned(time(NULL)));/*全部牌*/char S[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };char H[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };char D[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };char C[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };/*4个玩家*/char player1[13], player2[13], player3[13], player4[13];int p1 = 0, p2 = 0, p3 = 0, p4 = 0;distribution(S, player1, player2, player3, player4, &p1, &p2, &p3, &p4);distribution(H, player1, player2, player3, player4, &p1, &p2, &p3, &p4);distribution(D, player1, player2, player3, player4, &p1, &p2, &p3, &p4);distribution(C, player1, player2, player3, player4, &p1, &p2, &p3, &p4);puts("运行结束");for (int i = 0; i < 13; i++)printf("%c ", player1[i]);putchar('\n');for (int i = 0; i < 13; i++)printf("%c ", player2[i]);putchar('\n');for (int i = 0; i < 13; i++)printf("%c ", player3[i]);putchar('\n');for (int i = 0; i < 13; i++)printf("%c ", player4[i]);}void distribution(char * S_H_D_C, char * player1, char * player2, char * player3, char * player4, int *p1, int *p2, int *p3, int *p4){static int h = 1;int r;int a = *p1, b = *p2, c = *p3, d = *p4;for (int i = 0; i < 13; i++){r = (rand() % 4) + 1;while ((r == 1 && (*p1) == 13) || (r == 2 && (*p2) == 13) || (r == 3 && (*p3) == 13) || (r == 4 && (*p4) == 13))  r = (rand() % 4) + 1;switch (r){case 1:  player1[(*p1)++] = S_H_D_C[i];  break;case 2:  player2[(*p2)++] = S_H_D_C[i];  break;case 3:  player3[(*p3)++] = S_H_D_C[i];  break;case 4:  player4[(*p4)++] = S_H_D_C[i];  break;default:  break;}}switch (h++){case 1:  printf("黑桃:\n");  break;case 2:  printf("红桃:\n");  break;case 3:  printf("方块:\n");  break;case 4:  printf("梅花:\n");  break;}printf("Player1:");for (int i = a; i < (*p1); i++)  printf("%c ", player1[i]);putchar('\n');printf("Player2:");for (int i = b; i < (*p2); i++)  printf("%c ", player2[i]);putchar('\n');printf("Player3:");for (int i = c; i < (*p3); i++)  printf("%c ", player3[i]);putchar('\n');printf("Player4:");for (int i = d; i < (*p4); i++)  printf("%c ", player4[i]);putchar('\n');}

以下代码保证了当某个人得到13张牌后不在得牌:

r = (rand() % 4) + 1;while ((r == 1 && (*p1) == 13) || (r == 2 && (*p2) == 13) || (r == 3 && (*p3) == 13) || (r == 4 && (*p4) == 13))  r = (rand() % 4) + 1;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我。

不管你是转行也好,初学也罢,进阶也可

——【值得关注】我的C/C++编程学习进阶俱乐部!——

【编程学习Q群:795246887】

涉及到:C语言、C++、windows编程、网络编程、QT界面开发、Linux编程、游戏编程、黑客等等......

实现tinyc语言的扫描程序_适合编程小白的C语言设计习题,实现自动发牌程序!源码分享!...相关推荐

  1. php mysql 源码_【完结】php+MySQL实战案例【九】总结及源码分享

    ​PHP+MySQL 综合案例分享 总结及源码分享 案例功能 1.用户登录 统一登录页面,系统在登录时自动判断身份,管理登录时跳转到用户管理后台.普通用户登录时跳转至用户欢迎页. 系统登录: 管理员首 ...

  2. python抢票软件源代码_自己写的一个抢票加速的Python小程序源码分享-----纯属娱乐...

    最近这段时间频频看到微信群里发什么 抢票加速,智行.携程.飞猪.美团,对于我这能坐客车就不坐火车的人来说,无所谓靠谱不靠谱 突发奇想的整理了下整个抢票加速的逻辑,写了这个小程序,代码很low,拒绝批评 ...

  3. 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)

    微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...

  4. SpringBoot+Mysql+小程序实现的美团外卖美食小程序系统附带前台和后台代码整套源码包运行(问题解答)

            博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 SpringBoot+Mysql+小程序实现的美团外卖美食小程序系 ...

  5. 美团红包饿了么红包CPS小程序+ H5 +推出外卖红包应用,带有后台代码,安装超级简单-源码

    外卖CPS红包小程序源码分享 外卖cps带分销返利源码 饿了么红包.美团优惠券开发(外卖cps,三级裂变源码) 源代码地址 http://y.mybei.cn 搭建步骤 下载以上源代码到本地 http ...

  6. HTML卡片式布局源码,html5自适应卡片式设计动态加载整站源码_

    html5自适应卡片式设计动态加载整站源码 该模板是非常容易存活的,这样的程序很容易吸引访客点击,提升ip流量和pv是非常有利的,随意挂点联盟广告都能养活程序. 本套整站源码采使用现在非常流行的全屏自 ...

  7. 国际多语言出海商城返佣产品自动匹配订单源码

    国际多语言出海商城返佣产品自动匹配订单源码 8国多语言出海拼单商城 此网站是很多巴西客户定制的原型,已投放运营符合当地本地化 多语言商城返利返佣投资理财派单自带余额宝, 采取全新支付端口,后台语音提醒 ...

  8. C语言实现的一个小学生算数自测系统源码分享

    C语言实现的一个小学生算数自测系统源码分享 #include <stdio.h> //标准输入输出 #include <stdlib.h> //用于对程序进行退出操作 #inc ...

  9. 自己写的一个抢票加速的Python小程序源码分享-----纯属娱乐

    最近这段时间频频看到微信群里发什么 抢票加速,智行.携程.飞猪.美团,对于我这能坐客车就不坐火车的人来说,无所谓靠谱不靠谱 突发奇想的整理了下整个抢票加速的逻辑,写了这个小程序,代码很low,拒绝批评 ...

最新文章

  1. 【Linux】服务器常用的操作命令
  2. Geotools应用简要指南
  3. Effective C++ ——让自己习惯C++
  4. utf8 bom 去掉 java_utf-8-BOM删除bom
  5. Silverlight 5 beta新特性探索系列:9.视频快进快退和TextSearch对象对文字项查询
  6. 的图层类型有哪些_东莞都市领航平面设计培训班都学习哪些内容?
  7. php按钮打开文件选择框,在Select file(选择)页面单击Select file(选择文件)按钮
  8. 计算机知识说明,请说明计算机的工作原理
  9. ORACLE P6 21.12 系统虚拟机(VM)分享
  10. 模糊控制完全理解系列(二)—— 模糊集合论基础之模糊集基础概念
  11. 第一章 C语言郝斌笔记
  12. 浅析分支定界法在SLAM技术中的应用
  13. innosetup 通过操作注册表来添加默认文件关联
  14. php薄饼,厦门薄饼
  15. Nova API服务之Nova API服务的启动
  16. STC51入门笔记(郭天祥C语言)---第二节:Keil 软件使用及流水灯设计
  17. 论Fidderler抓包wegame查询召唤师战绩是否可行?
  18. 微软中国CTO:手机里装的App一上网基本等于裸奔
  19. AM335x启动流程(bootrom)
  20. Android各种大内存脚本对比(app2sd,a2sd,a2sd+,d2sd,CronMod,Mound2SD)

热门文章

  1. 让经纬度数据带矢量方向_惊艳!这样处理可得到细至可用于交通模型的路网数据...
  2. bufferedreader接收不到数据_PS4、Xbox手柄和Switch跨次元组队?全靠八位堂USB无线接收器...
  3. FTP(二)相关配置
  4. Linux中ifcfg-eth0配置参数解释
  5. 百度地图infoWindow圆角处理
  6. 数据持久化------Archiving(归档,解档)
  7. 备份关键信息linux
  8. kvm连接服务器显示不全有重影,KVM延长器系列常见问题及解决方法
  9. java选择排序解释_选择排序
  10. laravel 数据库获取值的常用方法