5.代码实现
#include <stdio.h>
void main()
{
int a[12]={0};
int i, j, count=0, flag=1;
//开始猜牌
i = 0;
while(flag!=13)
{
//如果这时候i已经到了数组末尾了就从头开始数
if(i>11)
{
i-=11;
}
//i指示到了该位置,如果是不为零,也就是已经有数了就直接跳过看下一个,如果为零那么count+1后再指向下一个
if(a[i]!=0)
{
i++;
}
else
{
count++;
i++;
}
//数空位置
if(count==flag)
{
a[i-1] = count; //因为前面数完了多count++了一次,所以要填数字的位置实际上是i指向位置的前一个。
count = 0; //计数器清空,准备开始下一次搜索
flag++; //把这张牌抽出来放到最底下,开始数下一张牌
i = 0; //搜索位置回到了开头,从这叠牌上面的第一张重新开始数牌
//打印每次的猜牌结果
printf("第%d次: ", flag-1);
for(j=0;j<12;j++)
{
printf("%d ", a[j]);
}
printf("\n");
}
}
}