欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

蓝桥杯 12-2 扑克牌分类串操作

最编程 2024-04-20 20:48:04
...
1 #include <bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 char color; //花色d,c,h,s 5 int num; //对应的扑克牌数字用对应的实际数字表示,2~14 6 int c; //对应的花色用对应的数字表示,便于比较 1~4 7 } nd[5]; 8 int check(char t) { //花色转数字 9 switch (t) { 10 case 'd': return 1; 11 case 'c': return 2; 12 case 'h': return 3; 13 case 's': return 4; 14 } 15 } 16 int judge(char c) { //A,J,Q,K转数字 17 switch (c) { 18 case 'A': return 14; 19 case 'J': return 11; 20 case 'Q': return 12; 21 case 'K': return 13; 22 } 23 } 24 bool cmp(node n1, node n2) { 25 if (n1.num != n2.num) { 26 return n1.num < n2.num; 27 } 28 return n1.c < n2.c; 29 } 30 int main() { 31 string s; 32 cin >> s; 33 int k = 0; 34 for (int i = 0; i < s.length(); i += 2) { 35 if (s[i] == '1') { //数字为10的情况单独处理 36 nd[k].num = 10; 37 nd[k].color = s[i + 2]; 38 nd[k].c = check(nd[k].color); //把花色转为数字 39 i++; 40 k++; 41 } else if (s[i] >= '2' && s[i] <= '9') { 42 nd[k].num = s[i] - '0'; 43 nd[k].color = s[i + 1]; 44 nd[k].c = check(nd[k].color); //把花色转为数字 45 k++; 46 } else { 47 nd[k].num = judge(s[i]); 48 nd[k].color = s[i + 1]; 49 nd[k].c = check(nd[k].color); //把花色转为数字 50 k++; 51 } 52 } 53 sort(nd, nd + 5, cmp); 54 for (int i = 0; i < 5; i++) { 55 if (nd[i].num >= 11) { 56 switch (nd[i].num) { 57 case 11: cout << 'J'; break; 58 case 12: cout << 'Q'; break; 59 case 13: cout << 'K'; break; 60 case 14: cout << 'A'; break; 61 } 62 } else { 63 cout << nd[i].num; 64 } 65 cout << nd[i].color << " "; 66 } 67 return 0; 68 }