纸牌游戏CF

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述
  • 玩家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 纸牌游戏 简单题相关推荐

  1. NYOJ 614 纸牌游戏

    纸牌游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 设2n张牌分别标记为1,2,-,n,n+l,-,2n,初始时这2n张牌按其标号从小到大排列. 经一次洗牌后,原来 ...

  2. java简单纸牌游戏_2020年最佳2人棋盘游戏:拼凑,Kingdomino等

    假期呆在房子里?这些是打发时间的完美游戏. 由于持续不断的 危机,今年的假期可能看起来要安静 得多.但是安静不一定意味着坏.我们中的大多数人都将放弃大型聚会,如果您要在家中聚会,那么 棋盘游戏 是打发 ...

  3. java简单纸牌游戏_活动回顾 | 畅玩法语纸牌游戏

    11月17日下午,20级小伙伴们迎来了第二次法语角活动!这次外教Anne-Flore Vrac 老师为同学们安排了丰富有趣的法语纸牌游戏,快来一起回顾活动的精彩瞬间吧! 集体游戏一:从1到30 老师首 ...

  4. 基于C++实现MFC简单的纸牌小游戏,附纸牌游戏引擎源码!

    VC++ 纸牌戏框架源码,不是完整的游戏源代码,基于MFC,写的还不是太熟悉,唉,先凑合吧,偶会继续努力学习MFC的,这个框架也是做了好几天的东西,亏本奉献了.. 项目展示: 代码展示: 效果: VB ...

  5. 运用简单队列、栈实现简单纸牌游戏

    案例分析 我们知道栈和队列能实现很多算法. 但是作为初学者,想要实现那些复杂.高深的算法其实挺难的. 那我们能不用用简单队列和栈做一些简单的程序呢? 我们做一个简单的纸牌游戏. 现在假设有玩家A和玩家 ...

  6. NYOJ 1009 So Easy[Ⅰ]【简单题】

    /* 题目大意:求三角形的外接圆 解题思路:c/sin(C)=2R,先求出cos,在求出sin 关键点:直接调用库 解题人:lingnichong 解题时间:2014-10-18 10:19:33 解 ...

  7. 用C#做一个简单纸牌游戏的程序

    小子不才学C#没多久,想做个窗体纸牌游戏玩,但是窗体应用懂得不多,只能在控制命令台上进行游戏设计,希望有大神能帮我设计这个窗体程序,或者推荐好的窗体设计资料,谢谢了,控制命令台程序如下: namesp ...

  8. 啊哈算法之纸牌游戏小猫钓鱼

    简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第三节的题目--纸牌游戏小猫钓鱼.文中代码使用C语言编写,但是仔细看了一遍发现原书中有个细节是错误的,也就是说按照算法题目意思,原书中作者 ...

  9. 【GDKOI训练】纸牌游戏(card)

    [GDKOI训练]纸牌游戏(card) 题目描述 Bessie 是一头非常喜欢纸牌的奶牛,虽然她没有大拇指,但她对纸牌有近乎痴迷的喜 爱.不幸的是,牛群中的其他牛都不是好的对手.他们的水平真的很差.他 ...

最新文章

  1. 2020长沙“科技之星”榜单重磅揭晓,近百家企业凭实力“出道”!
  2. IDEA 2020 本土化,真的是全中文了,新手,开心了!
  3. 【CTR预估】CTR模型如何加入稠密连续型和序列型特征?
  4. 元空间和直接内存_JVM探秘:Java内存区域
  5. 谁来拯救存量SGX1平台?又一个内核特性合并的血泪史
  6. 19生成材料清单_SOLIDWORKS 钣金装配体材料明细表扩展应用
  7. cglib和asm相关的文章
  8. matlab里path,Matlab设置永久path
  9. USACO1.1.2 - Greedy Gift Givers
  10. ubuntu下c++编译cpp(包含自定义类的多级调用)
  11. 解决12c安装过程中的各种报错
  12. 宝宝的成长脚印8/27
  13. 【DVRP】基于matlab遗传和粒子群算法求解带距离的车辆路径规划问题【含Matlab源码 1036期】
  14. php时间戳转UTC时间
  15. 电脑上看不到共享服务器的文件夹,WIN7共享文件夹后为何其它电脑看不到 - 卡饭网...
  16. 风行视频app v3.4.3.1
  17. 各种开发语言项目环境国内(中国国内加速镜像)配置教程和部分实践经验,包括github.com, nodejs,npm,nvm, yarn, java, maven, gradle, python, m
  18. 构建更安全、更智能、更健康的数字化世界——中新赛克2021全国渠道大会成功举办
  19. vue3 路由缓存页面
  20. 用cookie登录KinhDown教程

热门文章

  1. window powershell 替换文本的字符
  2. 设计模式学习笔记之-代理模式
  3. 004-Spring boot 快速入门-项目搭建与启动、SpringBootApplication、启动图标
  4. 攻击者使用“非恶意软件”也能识别,将在RSA 2017上发布的新技术
  5. Python中的文本处理
  6. 为什么Nginx性能比Apache高
  7. 解决:安装SQl 2008为SQL Server代理服务提供的凭据无效
  8. 14种东西帮你治疗口腔溃疡 - 生活至上,美容至尚!
  9. diesel fuel
  10. cambridge map