C 语言 洗牌程序

#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;
}
输出结果:
每秒洗牌一次:

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页