#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct shuffle{
char huas;
int fac;
}shuffle_card;
int b[52];//全局变量接收产生的不重复随机数
int readom_norepeat(int c[]);//产生不重复随机数
int print_card(shuffle_card *card);打印洗牌结果
int main(int argc, const char *argv[]){
shuffle_card card[52];
int i,j,k;
char huase[4]={'S','H','D','C'};
int face[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
for(i=0;i<52;i++)
{
card[i].huas = huase[i/13];
card[i].fac = face[i%13];
}
print_card(card);
return 0;
}
int readom_norepeat(int c[]){
int a[52];
int i,j;
srand((int)time(0));
a[0]=rand()%52+1;
for(i=1;i<52;i++)
{
a[i]=rand()%52+1;
for(j=0;j<i;j++)
{
if(a[i]==a[j])
{
i--;
}
}
}
for(i=0;i<52;i++)
{
if(a[i]!=52)
c[i] = a[i];
}
return 0;
}
int print_card(shuffle_card *card)
{
int i,n=1;;
printf("开始洗牌:黑桃-S(Spade)红桃-H(Heart)方片-D(Diamond)梅花-C(Club)\n");
while(1)
{
readom_norepeat(b);
for(i=0;i<52;i++){
if(card[b[i]].fac==1)
{printf("%c-%c ",card[b[i]].huas,'A');}
else if(card[b[i]].fac==11)
{printf("%c-%c ",card[b[i]].huas,'J');}
else if(card[b[i]].fac==12)
{printf("%c-%c ",card[b[i]].huas,'Q');}
else if(card[b[i]].fac==13)
{ printf("%c-%c ",card[b[i]].huas,'K');}
else {printf("%c-%d ",card[b[i]].huas,card[b[i]].fac);}
if((i+1)%13 ==0)
{
puts("\n");
}
}
printf("==================洗牌%d次==============\n",n);
n++;
sleep(1);
}
printf("按Ctrl结束洗牌\n");
return 0;
}
输出结果:
每秒洗牌一次: