我要疯了。我正在编写一个源代码,它从洗好的牌组中选择 5 张扑克牌,并识别是否有一对、双对、三对等。然而,处理寻找顺子的功能让我很难过。我不得不重写这个,因为我之前没有考虑过 Ace 可以值 1 和 11 的事实。这是来源:
int hasStraight(const int wFirstFace[],int size)
{
int *firstfacePtr,i,j;
firstfacePtr=wFirstFace;
for(i=0;i<=1;i++)
{
for(j=0;j<=size-2;j++)
{
if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==0)
break;
else if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==1)
return 0;
else if (j==3 &&firstfacePtr[j]==firstfacePtr[j+1]-1)
printf("Scala!\n");
return 1;
}
if (firstfacePtr[0]==0)
firstfacePtr[0]=13;
bubble(firstfacePtr,size); /*bubble goes through an array
and put it in ascending order*/
}
}
注:wFirstFace
是一个包含 5 个整数的数组;size 是一个整数,它等于 5。我试图声明wFirstFace={0,1,2,3,4}
以检查代码是否有效。然后,内部的“for”循环在一个循环后结束,函数返回一个 0,我什至不知道为什么或在哪里。我在这个凌乱的源代码中哪里出错了?