C语言算法---扑克牌排序问题描述
文章目录
扑克牌排序问题描述 :输入说明 :输出说明 :输入范例 :输出范例 :解题思路参考代码
扑克牌排序
(资料图片仅供参考)
问题描述 :
明明和他的三位同学在玩一种非常有趣的扑克牌游戏。
在这个游戏中,一副牌的大小怪被除去,然后把剩下的 52 张牌随机发给 4 个人,这样每个人的手中就有 13 张牌。
接下来的任务就是每个人把自己手中的牌按一定的顺序整理好。理牌的顺序如下:
首先按牌的大小整理,牌的大小顺序为:A,K,Q,J,T(10),9,…,2,如果牌的大小相等,则按如下的花色顺序整理:黑桃(S),红心(H),方块(D),草花(C)。
例如有一个人手中拿到的牌如下:
ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CK
经过整理后的牌的顺序会变为:
SK HK CK HQ CQ ST HT H9 S8 D8 H3 H2 D2
其中 SK、HK、CK 这三张牌的大小相同,都是 K,于是根据花色的顺序整理,先是 S,再是 H,最后是 C,所以顺序为 SK、HK、CK。
当每个人把自己手中的牌整理完后,他们就开始玩非常有趣的扑克游戏了。但是玩着玩着,他们发现了一个问题:理牌的时间太长,这使得他们玩牌的兴致被大大减弱了。于是他们来求助于你,能否帮他们写一个理牌程序,帮助他们理牌,这样他们就可以不必把大量的时间花在理牌上面,而尽情享受玩牌的乐趣了。
明明的问题可以归结为:给你每人手中顺序打乱的 13 张牌,一共有 4 套,然后通过题目中描述的理牌顺序,理好这 4 套牌。
输入说明 :
你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,测试数据的第一行有一个整数 n,表示有几副牌需要整理,接着每副牌分四行输入,每行 13 张牌;每张牌用两个字母表示,首字母表示花色,尾字母表示点数,两张牌之间有一个空格。每副牌与每副牌之间没有任何空行,第一副牌前面以及最后一副牌后面也都没有任何空行。 注:通常,键盘为标准输入设备。
输出说明 :
对于每一副牌,你写的程序要求计算出一组相应的运算结果,并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。对于每组输入的牌,输出排序后的牌,分四行输出,输出样式与输入相同。每组运算结果与其后一组运算结果之间有一个空行,第一组运算结果前面及最后一组运算结果后面没有空行。 注:通常,显示屏为标准输出设备。
输入范例 :
2ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CKD9 HJ H7 DJ S2 SQ DT C2 H4 H5 DA D4 D5D6 S4 S9 S5 S7 SJ H8 D3 C8 S3 C4 S6 C9SA C7 HA H6 DK CJ D7 CA C5 CT DQ C6 C3D6 S4 S9 S5 S7 SJ H8 D3 C8 S3 C4 S6 C9D9 HJ H7 DJ S2 SQ DT C2 H4 H5 DA D4 D5ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CKSA C7 HA H6 DK CJ D7 CA C5 CT DQ C6 C3
输出范例 :
SK HK CK HQ CQ ST HT H9 S8 D8 H3 H2 D2DA SQ HJ DJ DT D9 H7 H5 D5 H4 D4 S2 C2SJ S9 C9 H8 C8 S7 S6 D6 S5 S4 C4 S3 D3SA HA CA DK DQ CJ CT D7 C7 H6 C6 C5 C3SJ S9 C9 H8 C8 S7 S6 D6 S5 S4 C4 S3 D3DA SQ HJ DJ DT D9 H7 H5 D5 H4 D4 S2 C2SK HK CK HQ CQ ST HT H9 S8 D8 H3 H2 D2SA HA CA DK DQ CJ CT D7 C7 H6 C6 C5 C3
解题思路
使用 C 语言的库函数 qsort,需要注意扑克牌的大小不完全是字典序
A > K > Q > J > 9 > 8 > …… > 2;
花色为字典序降序
黑桃(S),红心(H),方块(D),草花(C)。
参考代码
#include#include#include#include#include#include#define MAX_SIZE 13struct Poker{char color; char num;};void input(struct Poker p[4][MAX_SIZE]);void output(struct Poker p[4][MAX_SIZE]);int cmp(const void *a, const void *b){struct Poker *c = (struct Poker *)a; struct Poker *d = (struct Poker *)b; if (c->num != d->num) //对牌号排序: A > K > Q > J if ("A" <= c-="">num && c->num <= "Z" && "A" <= d-="">num && d->num <= if="" c-="">num == "Q" && d->num == "J" || c->num == "J" && d->num == "Q") return d->num - c->num; else if (c->num == "K" && d->num == "J" || c->num == "J" && d->num == "K") return d->num - c->num; else return c->num - d->num; else //字母排在数字后 return d->num - c->num; else //数字相同,按颜色排序 return d->color - c->color;}int main(){int i, j, n; struct Poker poker[4][MAX_SIZE]; scanf("%d", &n); getchar(); for (i = 0; i < n; i++) {input(poker); for (j = 0; j < 4; j++) qsort(poker[j], MAX_SIZE, sizeof(poker[j][0]), cmp); output(poker); if (n > 1) putchar("\n"); } return 0;}void input(struct Poker p[4][MAX_SIZE]){int i, j; for (i = 0; i < 4; i++) {for (j = 0; j < 13; j++) {scanf("%c%c", &p[i][j].color, &p[i][j].num); getchar(); } }}void output(struct Poker p[4][MAX_SIZE]){int i, j; for (i = 0; i < 4; i++) {printf("%c%c", p[i][0].color, p[i][0].num); for (j = 1; j < 13; j++) printf(" %c%c", p[i][j].color, p[i][j].num); putchar("\n"); }}
标签:
相关推荐:
最新新闻:
- 世界热门:如何打开pdg文件?手把手教你打开PDG文件
- golang-java-serializer序列化算法解析|当前热文
- 【python】Python中最常用的数据类型|播资讯
- mysql-h主机名-p密码库名C-lamp61数据库
- 紫外光激发使光诱导进入二苯并--萘酚的花菁形式
- 如何通过factory-girl去定义测试数据中的用户角色?
- 启发式搜索算法解决八数码问题(C语言)珍藏版:每日简讯
- 【爬取红岭创投】存储在mysql数据库中的无头模式 当前速讯
- python中的matplotlib:创建图表的绘图包:世界速看料
- bot短期密集访问形成的流量高峰有哪些?如何解决?|天天微资讯
- seo入门知识有哪些?seo入门需掌握的基础知识
- 显示器色域检测软件怎么下载?显示器色域检测图拉丁版
- 茅台推出酒瓶装冰淇淋酷似飞天茅台:66元一瓶:热资讯
- 【剑灵力士】新版本力士职业天赋加点推荐 备战不删档-焦点
- 《寓言之地》将于4月13日在Steam开启抢先体验测试
- IE浏览器未响应怎么办?IE浏览器未响应问题的解决办法
- 环球资讯:网页突然打不开其他软件却能上网?怎么解决?
- 【scrapy框架】scrapy框架糗事百科爬虫案例分享 世界快资讯
- 环球关注:外媒称网易暴雪分手 是因为网易“威胁”了科蒂克
- web服务器是什么?web服务器的概念与类型
- C语言算法---扑克牌排序问题描述
- 躲过15次GC之后 进入老年代系统有哪些规则?|天天最资讯
- 环球快报:十二届省委第二轮巡视完成反馈
- 理想汽车雷达在无人陵园显示全是人影 官方回应_每日视点
- 央企专业化整合精准提速-世界热资讯
- 全球快看点丨《最后的生还者》PC版更新仍未解决卡顿等问题
- 环球观点:《GT赛车7》今日更新免费追加丰田豪华MPV
- MINISFORUM NAB6迷你主机上架:i7-12650H准系统低至2599元:天天热议
- 松下极简电吹风159元:天天快资讯
- 迪斯尼取缔元宇宙部门
- 资讯:Curved Lines展览征集稿件
- 固态PCIe转接卡5.9元
- 《霍格沃茨之遗》成为2023年2月北美最畅销电子游戏_世界快看点
- 天天热点评!PS+欧美服4月会免游戏公布 《麻布仔大冒险》等
- 新一代高贵“亮机卡”!RTX 4050被曝6月发布:弱得不像话 动态焦点
- 怎样去除甲醛最好_怎样去除甲醛最有效
- PC《最后生还者:第一部》4080 4K帧率测试 DLSS效果出色
- 接手机宾得望远镜889元_天天报资讯
- Steam明年不再支持Win7、8!
- 透视上市券商年报:两融业务不乏亮点 仍需多维度补短板:每日热文
- 广宇发展:2022年营收34亿元,净利6.33亿元 | 年报快讯
- 环球今日报丨TGA红灵入侵少年再出现:送给甲亢哥梅西签名球衣
- 斯坦福大学医院外科医生培训 白男占比0%引争议
- 玲娜贝儿设计师遭裁员:已经累计为迪士尼公司工作22年-焦点快报
- 《地平线:西之绝境》DLC“燃烧海岸”新截图公开-今日最新
- 世界视讯!超过90%会员表示:如果没有XGP就不会尝试在玩的游戏
- 每日热点:有学历如何去澳大利亚工作_办理澳大利亚工作签证需要什么条件
- 《塞尔达传说:王国之泪》武器融合系统《蟹蟹寻宝奇遇》早有了:别说我抄袭|世界即时
- 世界热资讯!《TLOUP1》PC版首日峰值36496人 位列PS游戏第四
- 小米13 Ultra定档:4月中旬发布 世界热议
- 【新视野】2499 元,影驰 PCIe 5.0 高速固态硬盘发布,速度可达 10G/s
- 引领个人PC新风尚 “定番”款笔记本电脑VAIO F14·F16在日本上市 全球快报
- 股票行情快报:中色股份(000758)3月29日主力资金净卖出2901.96万元
- 外媒盘点《生化危机4重制版》十大最可怕敌人:电锯狂人仅第四
- 白客坦言:"王大锤"后 导演看中了我的朴实和普通_当前速看
- 42岁法国女星伊娃·格林新写真 贴身长裙大秀好身材 速讯
- 《迷雾魔域:迷雾与活地下城》的众筹活动开始!
- 传《巫师:天狼星》是日本背景 目标是在东方推广巫师
- 《龙之陨落》上架steam年内发售 爽快3D动作RPG 焦点短讯
- 环球短讯!360版ChatGPT要来了!周鸿祎:大家给起个名字
- 前《寂静岭》编剧:《寂静岭2:重制版》将让玩家失望
- 【快播报】安桥cmx1听感(安桥cmx1)
- 全球观天下!零售商上架新PS5主机 简介或暗示PS5Slim即将推出
- 快看:顽皮狗发布公告 阐述PC《最后生还者:第一部》已知问题
- 英特尔汇排流技术 助烽火超微Xeon服务器竞争力提升
- 热点在线丨追觅科技推动《电吹风》标准制定,引领行业进入规范化发展新时代
- 大咖齐聚 中国AIGC创新发展论坛将开幕 百度万兴科技科大讯飞等受邀参会
- 天天实时:人工智能时代已经到来——探索设计师的角色转变
- 诺基亚官宣:今年把4G网络带到月球_今热点
- 全球观点:123搜狗浏览器_123sogou
- 男子陵园祭祖车雷达显示全是人 网友:啥车?我想试试
- 天天即时:IGN《法外枭雄》13分钟实机:多位好莱坞影星登场!
- 金钱不是万能的辩论赛_金钱不是万能的辩论:世界球精选
- 苏宁易购预售红米Note12,线上预定送碎屏险
- Note 12 Turbo屏幕与天马深度共研,风车像素排列
- 装机神条!16GB DDR4 3200MHz内存低至185元:每日时讯
- 天天简讯:集成灶十大品牌帅丰电器持续深入终端,助力全国帅丰集成灶门店
- 全球热议:跌跌不休,内存还将继续降价,至少再打 9 折
- 2023育碧前瞻会再度归来!6.13洛杉矶现场直播
- 《王国之泪》限定NS OLED开箱:金绿符文神秘感拉满
- 活到老打到老 《师父》steam首发优惠立减10%
- 云南思茅:夯实自治“小支点” 撬动社区“大治理”:世界观热点
- 一加11木星岩版发布:纹理独一无二 聚看点
- 不会录屏?Siri可以帮你实现了:热推荐
- 世界微资讯!海信电视亮相上海张园,与《家居廊》共探家居艺术新边界