关闭

华为机试题 扑克牌判断

372人阅读 评论(0) 收藏 举报
分类:
一副牌中发五张扑克牌给你:让你判断数字的组成:
有以下几种情况:
1:四条:即四张一样数值的牌(牌均不论花色)
2
:三条带一对
3
:三条带两张不相同数值的牌
4
:两对
5
:顺子  包括 10JQKA
6
:什么都不是
7
:只有一对

#include
using namespace std;
void sort(int a[]) //冒泡排序
{ int temp;
for(int i=0;i<5;i++)
 for(int j=0;j<4-i;j++)
if(a[j+1]
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
}
void test(int a[])
{ int *b=new int[5];
int k=1;//k表示有多少个两两相等的数字,即k-1表示对数。
sort(a);
for(int i=0;i<5;i++)
 { b[i]=a[i];}
if((b[4]==13&&b[3]==12&&b[2]==11&&b[1]==10&&b[0]==1))
{
cout<<"顺子"<<endl;
return;
}
for(int j=0;j<4;j++)
if(a[j]==a[j+1])
k++;
if(k>4)
{
cout<<"输入错误"<<endl;
}
if(k==4){
if(b[1]==b[3])
{cout<<"四条"<<endl;
return;}
else
{ cout<<"三条带一对"<<endl;
return;
}
}
if(k==3){
if(b[0]==b[1]&&b[1]==b[2]||b[1]==b[2]&&b[2]==b[3]||b[2]==b[3]&&b[3]==b[4])
{ cout<<"三条带两个不同的牌"<<endl;
return;}
else
{cout<<"两对"<<endl;
return;}
}
if(k==2)
{
cout<<"一对"<<endl;
return;
}
if(k==1){
if(b[4]-b[0]==4&&b[4]-b[1]==3&&b[4]-b[2]==2&&b[4]-b[3]==1)
{
cout<<"顺子"<<endl;
return;
}
else
{
cout<<"什么都不是"<<endl;
return;
}
}
  }
int main()
{  int a[]={1,2,1,2,1};
test(a);
return 0;
}

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35965次
    • 积分:1184
    • 等级:
    • 排名:千里之外
    • 原创:85篇
    • 转载:5篇
    • 译文:0篇
    • 评论:3条
    最新评论