定義卡片數組,並使用循環語句為其賦值。花色0-3,點數1-13。
定義sum=0。
隨機生成從0到53的數字。讀取它的下標,訪問它的顏色,並將顏色保存在變量hs中。
循環,如果新下標對應的牌的花色也是hs,輸出和sum++,否則循環。
在sum++中,如果sum==7,則退出循環。
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & lttime.h & gt
//撲克牌的定義:花色和點數。
typedef?結構體
{
int?hs;
int?pt;
}卡;
//初始化壹張完整的撲克牌
作廢?init(卡?c[])
{
int?我;
for(I = 0;我& lt52;i++)
{
c[i]。hs = I % 4+1;
c[i]。pt = I/4+1;
}
}
//輸出撲克牌數組
作廢?打印(卡?c[],int?n)
{
int?我;
夏爾?Chs[4][5]={“黑桃”、“紅桃”、“梅花”、“方塊”};
夏爾?cpt[13][3]={"A "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 10 "," J "," Q "," K " };
for(I = 0;我& ltn;i++)
printf("%s%s\n ",chs[c[i]。[中國核科技信息網]。pt-1]);
}
作廢?主()
{
卡?卡[52];
卡?cardNew[7],firstCard,tmpCard
int?I,j;
srand((無符號)時間(空));
init(卡);
//抽第壹張撲克牌
first card = card[rand()% 54];
card new[0]= first card;
//提取剩下的6張。
for(I = 0;我& lt6;)
{
tmp card = card[rand()% 52];
//必須保證顏色壹致。
if(tmpCard.hs==firstCard.hs)
{
//對點進行重復性測試。
for(j = 0;j & lt= I;j++)
if(tmpCard.pt==cardNew[j].pt)
打破;
//如果不重復,就加到新堆裏。
if(j & gt;我)
{
card new[I+1]= tmp card;
i++;
}
}
}
print(cardNew,7);
}