NYOJ 721 纸牌游戏 简单题
纸牌游戏CF
- 描述
-
玩家1和玩家2各出一张牌,看谁大。如果两张牌都不是王牌花色或则都是王牌花色,则牌面大的牌大,如果牌面一样大则一样大。若其中一张牌是王牌而另一张不是,则无论牌面如何都是王牌花色大。
- 输入
-
第一行一个数字n,代表数据组数(n <= 10)
对于每组数据,首先输入一个字符(S\H\D\C),表示王牌花色。
接下去一行有两张牌面,表示为牌面花色,如8D、9S等。 - 输出
- 对于每组数据,输出第一张牌是否比第二张牌大,若是则输出YES,否则输出NO
- 样例输入
-
1 H QH 9S
- 样例输出
-
YES
第一次写的较长的代码:
#include<stdio.h> #include<string.h> int main() {int n,t,m,len1,len2;char s1[5],s2[5],ch;scanf("%d",&t);getchar();while(t--){scanf("%c",&ch);getchar();scanf("%s %s",s1,s2);len1=strlen(s1);len2=strlen(s2);if(len1==3) m=10;else if(len1==2){if(s1[0]>='2'&&s1[0]<='9')m=s1[0]-'0';else if(s1[0]=='A') m=1;else if(s1[0]=='J') m=11;else if(s1[0]=='Q') m=12;else if(s1[0]=='K') m=13;}if(len2==3) n=10;else if(len2==2){if(s2[0]>='2'&&s2[0]<='9')n=s2[0]-'0';else if(s2[0]=='A') n=1;else if(s2[0]=='J') n=11;else if(s2[0]=='Q') n=12;else if(s2[0]=='K') n=13;}int flag=1;if(len1==3&&len2==3){if(s1[2]==ch&&s2[2]==ch){if(m<=n) flag=0;}else if(s1[2]!=ch&&s2[2]==ch)flag=0;else if(s1[2]!=ch&&s2[2]!=ch){if(m<=n) flag=0;}}else if(len1==3&&len2==2){if(s1[2]==ch&&s2[1]==ch){if(m<=n) flag=0;}else if(s1[2]!=ch&&s2[1]==ch)flag=0;else if(s1[2]!=ch&&s2[1]!=ch){if(m<=n) flag=0;}}else if(len1==2&&len2==3){if(s1[1]==ch&&s2[2]==ch){if(m<=n) flag=0;}else if(s1[1]!=ch&&s2[2]==ch)flag=0;else if(s1[1]!=ch&&s2[2]!=ch){if(m<=n) flag=0;}}else if(len1==2&&len2==2){if(s1[1]==ch&&s2[1]==ch){if(m<=n) flag=0;}else if(s1[1]!=ch&&s2[1]==ch)flag=0;else if(s1[1]!=ch&&s2[1]!=ch){if(m<=n) flag=0;}}if(flag) printf("YES\n");else printf("NO\n");getchar();}return 0; }
写完以后觉得可以把这段代码简化一下,因为里面有很多一样的部分,即使不一样,思想也是一样的,比如把牌号转化为十进制数字时可以写一个函数,判断花色时只需判断s1[len1-1]和s2[len2-1]即可,没有必要分开写,简化以后代码几乎缩短了一半。
简化后代码:
#include<stdio.h> #include<string.h> int n,t,m,len1,len2; char s1[5],s2[5],ch; int find(char *s,int len)/*把牌号转化为十进制数字*/ {int k;if(len==3) k=10; /*长度为3,牌号肯定是10*/else if(len==2){if(s[0]>='2'&&s[0]<='9')k=s[0]-'0';else if(s[0]=='A') k=1;else if(s[0]=='J') k=11;else if(s[0]=='Q') k=12;else if(s[0]=='K') k=13;}return k; } int main() {scanf("%d",&t);getchar();while(t--){scanf("%c",&ch); /*王牌花色*/getchar();scanf("%s %s",s1,s2);len1=strlen(s1);len2=strlen(s2);m=find(s1,len1);n=find(s2,len2);int flag=1;if(s1[len1-1]==ch&&s2[len2-1]==ch) /*两张牌都是王牌花色*/{if(m<=n) flag=0;} /*注意这个大括号不能少*/else if(s1[len1-1]!=ch&&s2[len2-1]==ch) /*第一张不是,第二张是王牌花色*/flag=0;else if(s1[len1-1]!=ch&&s2[len2-1]!=ch) /*都不是王牌花色*/{if(m<=n) flag=0;}if(flag) printf("YES\n");else printf("NO\n");getchar();}return 0; }
里面需要注意的是大括号和getchar()的运用,多一个少一个结果就会不一样,要仔细思考。
NYOJ 721 纸牌游戏 简单题相关推荐
- NYOJ 614 纸牌游戏
纸牌游戏 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 设2n张牌分别标记为1,2,-,n,n+l,-,2n,初始时这2n张牌按其标号从小到大排列. 经一次洗牌后,原来 ...
- java简单纸牌游戏_2020年最佳2人棋盘游戏:拼凑,Kingdomino等
假期呆在房子里?这些是打发时间的完美游戏. 由于持续不断的 危机,今年的假期可能看起来要安静 得多.但是安静不一定意味着坏.我们中的大多数人都将放弃大型聚会,如果您要在家中聚会,那么 棋盘游戏 是打发 ...
- java简单纸牌游戏_活动回顾 | 畅玩法语纸牌游戏
11月17日下午,20级小伙伴们迎来了第二次法语角活动!这次外教Anne-Flore Vrac 老师为同学们安排了丰富有趣的法语纸牌游戏,快来一起回顾活动的精彩瞬间吧! 集体游戏一:从1到30 老师首 ...
- 基于C++实现MFC简单的纸牌小游戏,附纸牌游戏引擎源码!
VC++ 纸牌戏框架源码,不是完整的游戏源代码,基于MFC,写的还不是太熟悉,唉,先凑合吧,偶会继续努力学习MFC的,这个框架也是做了好几天的东西,亏本奉献了.. 项目展示: 代码展示: 效果: VB ...
- 运用简单队列、栈实现简单纸牌游戏
案例分析 我们知道栈和队列能实现很多算法. 但是作为初学者,想要实现那些复杂.高深的算法其实挺难的. 那我们能不用用简单队列和栈做一些简单的程序呢? 我们做一个简单的纸牌游戏. 现在假设有玩家A和玩家 ...
- NYOJ 1009 So Easy[Ⅰ]【简单题】
/* 题目大意:求三角形的外接圆 解题思路:c/sin(C)=2R,先求出cos,在求出sin 关键点:直接调用库 解题人:lingnichong 解题时间:2014-10-18 10:19:33 解 ...
- 用C#做一个简单纸牌游戏的程序
小子不才学C#没多久,想做个窗体纸牌游戏玩,但是窗体应用懂得不多,只能在控制命令台上进行游戏设计,希望有大神能帮我设计这个窗体程序,或者推荐好的窗体设计资料,谢谢了,控制命令台程序如下: namesp ...
- 啊哈算法之纸牌游戏小猫钓鱼
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第三节的题目--纸牌游戏小猫钓鱼.文中代码使用C语言编写,但是仔细看了一遍发现原书中有个细节是错误的,也就是说按照算法题目意思,原书中作者 ...
- 【GDKOI训练】纸牌游戏(card)
[GDKOI训练]纸牌游戏(card) 题目描述 Bessie 是一头非常喜欢纸牌的奶牛,虽然她没有大拇指,但她对纸牌有近乎痴迷的喜 爱.不幸的是,牛群中的其他牛都不是好的对手.他们的水平真的很差.他 ...
最新文章
- 2020长沙“科技之星”榜单重磅揭晓,近百家企业凭实力“出道”!
- IDEA 2020 本土化,真的是全中文了,新手,开心了!
- 【CTR预估】CTR模型如何加入稠密连续型和序列型特征?
- 元空间和直接内存_JVM探秘:Java内存区域
- 谁来拯救存量SGX1平台?又一个内核特性合并的血泪史
- 19生成材料清单_SOLIDWORKS 钣金装配体材料明细表扩展应用
- cglib和asm相关的文章
- matlab里path,Matlab设置永久path
- USACO1.1.2 - Greedy Gift Givers
- ubuntu下c++编译cpp(包含自定义类的多级调用)
- 解决12c安装过程中的各种报错
- 宝宝的成长脚印8/27
- 【DVRP】基于matlab遗传和粒子群算法求解带距离的车辆路径规划问题【含Matlab源码 1036期】
- php时间戳转UTC时间
- 电脑上看不到共享服务器的文件夹,WIN7共享文件夹后为何其它电脑看不到 - 卡饭网...
- 风行视频app v3.4.3.1
- 各种开发语言项目环境国内(中国国内加速镜像)配置教程和部分实践经验,包括github.com, nodejs,npm,nvm, yarn, java, maven, gradle, python, m
- 构建更安全、更智能、更健康的数字化世界——中新赛克2021全国渠道大会成功举办
- vue3 路由缓存页面
- 用cookie登录KinhDown教程