判断5张扑克牌的组成
来源:互联网 发布:mac大写字母怎么打 编辑:程序博客网 时间:2024/05/21 11:24
一副牌中发五张扑克牌给你,让你判断数字的组成:
有以下几种情况:
1:四条:即四张一样数值的牌(牌均不论花色)
2:三条带一对
3:三条带两张不相同数值的牌
4:两对
5:顺子(包括10,J,Q,K,A)
6:什么都不是
有以下几种情况:
1:四条:即四张一样数值的牌(牌均不论花色)
2:三条带一对
3:三条带两张不相同数值的牌
4:两对
5:顺子(包括10,J,Q,K,A)
6:什么都不是
7:只有一对
分析:
应该不包含大小王,另外J、Q、K、A分别相当于11、12、13、14,虽然从2到A一共是13张牌,但是为了方便对应,使用了一个包含15个元素的数组来记录每一个点数出现的次数(舍弃0号元素和1号元素)。
为了记录发给你的5张牌,直接用整型肯定不行,不能接受J、Q、K、A的输入,刚开始的时候准备使用一个字符数组接受输入,然后再转换为整型,但是字符输入是不能接受10这样的输入的,最后只能使用字符串数组接受输入。
C代码如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>#define LEN 5#define TOTAL_LEN 15 char str_poker[LEN][3];int int_poker[LEN] = {0};int total_poker[TOTAL_LEN] = {0};void check(int len, int poker[]);void ch_to_int(int len, char str_array[][3], int int_array[]);void int_sort(int len, int a[]);int main(){int i;printf("please input your cards:");for(i=0; i<LEN; i++)scanf("%s",str_poker[i]);ch_to_int(LEN, str_poker, int_poker);printf("the result is:");check(LEN, int_poker);return 0;}void ch_to_int(int len, char str_array[][3], int int_array[]){int i;for(i=0; i<LEN; i++){if(strcmp(str_array[i],"10") == 0){int_array[i] = 10;continue;}if(strcmp(str_array[i],"J") == 0){int_array[i] = 11;continue;}if(strcmp(str_array[i],"Q") == 0){int_array[i] = 12;continue;}if(strcmp(str_array[i],"K") == 0){int_array[i] = 13;continue;}if(strcmp(str_array[i],"A") == 0){int_array[i] = 14;continue;}int_array[i] = atoi(str_array[i]);}}void int_sort(int len, int a[]){int i,j,temp;for(i=0; i<len-1; i++)for(j=0; j<len-1; j++)if(a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}void check(int len, int poker[]){int i;int res = 1;for(i=0; i<LEN; i++)total_poker[poker[i]]++;for(i=1; i<=TOTAL_LEN; i++){if(total_poker[i] == 4){printf("四条加一张\n");return;}if(total_poker[i] >= 2)res *= total_poker[i];}if(res > 1){switch(res){case 2:printf("一对加三张不同\n");break;case 3:printf("三条加两张不同\n");break;case 4:printf("两队加一张\n");break;case 6:printf("三条加一对\n");break;}}else{int_sort(LEN, poker);for(i=0; i<LEN-1; i++){if(poker[i+1] != poker[i] + 1){printf("什么都不是\n");return;}}printf("五张顺子\n");}}
1 0
- 判断5张扑克牌的组成
- 判断5张扑克牌分析其组成
- 华为机试—5张扑克牌的组成
- 判断扑克牌的数值情况(5张)
- 如何判断五张扑克牌是不是连续的
- 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
- 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
- 判断扑克牌的顺子
- 华为2012年上机考试------一副牌中发五张扑克牌给你:让你判断数字的组成
- 从扑克牌中随机抽5张牌,判断是不是一个顺子
- 从扑克牌中随机抽取5张牌,判断是不是一个顺子。
- 让人感激涕零的五十四张扑克牌
- 52张扑克牌的洗牌算法
- 23 判断扑克牌的顺子
- Java实现——多张扑克牌是否能组成顺子
- 扑克牌8张朝上
- 输出52张扑克牌
- C#控制台实现52张扑克牌的分法
- TCP/IP(3.7)路由选择协议
- 你的培训离互联网思维还有多远?
- Android Jni开发环境搭建完整版
- NSCache 简单用法
- Android开发之获取手机SIM卡信息
- 判断5张扑克牌的组成
- app-framework学习--隐藏Header Menu于隐藏Footer Menu
- 查看端口号是否被占用情况
- windows wininet api 实现下载web服务器文件(l历史代码,贴出共享)
- 图解单片机下载程序电路原理之USB转串口线、CH340、PL2303、MAX232芯片的使用! .
- 7-类
- 黑马程序员-----Category,protocol和block(一)
- POJ-3321-Apple Tree
- iOS 内购第三方支付(阅读器如何解决问题解决)