华为机试题 扑克牌判断

一副牌中发五张扑克牌给你:让你判断数字的组成:
有以下几种情况:
1 :四条:即四张一样数值的牌(牌均不论花色)
2:三条带一对
3:三条带两张不相同数值的牌
4:两对
5:顺子  包括 10,J,Q,K,A
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;
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值