原题链接:王牌花色
解题思路:字符数字码值比字母小。转换10和K,统一数据位数和ASCII码值,就可以按顺序按位数比较了,faces[0]是点数,faces[1]是花色
注意事项:每次输入字符(串)都要捕获结束符
参考代码:
#include <stdio.h>
int main() {
int n; //数据量
scanf("%d",&n);
getchar(); //捕获结束符
while(n--) {
char faces[2][3]= {'\0'},king; //牌面花色,王牌花色
int judgeKing; //判断王牌花色
scanf("%c",&king);
// printf("%c\n",king); //测试代码:查看王牌花色
getchar();
scanf("%s%s",faces[0],faces[1]);
getchar();
// 10占两位字符,转为单字母,保证位数对齐,方便比较
// 10转为 I,K转为 Z,保证 牌面与 ASCII 同时顺序增加
for(int i=0; i<2; i++)
if(faces[i][0]=='1'&&faces[i][1]=='0') {
faces[i][0]='I';
faces[i][1]=faces[i][2]; //花色位左移
faces[i][2]='\0';
} else if(faces[i][0]=='K')
faces[i][0]='Z';
// printf("%s %s\n",faces[0],faces[1]);//测试代码:查看转换结果
// 双方均有或没有王牌花色则判断点数
judgeKing=(faces[0][1]==king?1:0) - (faces[1][1]==king?1:0);
// printf("王牌状况:%d\n",judgeKing); //测试代码:查看王牌判断结果
if(judgeKing)
printf("%s\n",judgeKing>0?"YES":"NO");
else
printf("%s\n",faces[0][0]>faces[1][0]?"YES":"NO");
}
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复