结构体优化示例

摘自老师的PPT

(还没细看,先放着)

在这里插入图片描述

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
struct card{
   char * face;
   char * suit;
};

typedef struct card Card;

void fillDeck(Card * wDeck,char * wFace[],char * wSuit[]);
void shuffle(Card * wDeck);
void deal(Card * wDeck);
int main(void)
{
   Card deck[52];   //声明一个结构数组,存放扑克牌
 
   char * face[]={"Ace","Deuce","Three","Four","Five",
                  "Six","Seven","Eight","Nine","Ten",
                  "Jeck","Queen","King"};
   char * suit[]={"Hearts","Diamonds","Clubs","Spades"};
   
   srand(time(NULL));//定义并初始化指针数组


   fillDeck(deck,face,suit); //初始化一副牌
   shuffle(deck); //洗牌
   deal(deck);  //发牌

   return 0;
}
void fillDeck(Card * wDeck,char * wFace[],char * wSuit[])
{ 
     int i;
     i=0;
    for(suit=0;suit<=3;suit++)
         for(face=0;face<=12;face++){
              wDeck[i].suit=wSuit[suit];
              wDeck[i].face=wFace[face];
              i++;
   }
}
void fillDeck(Card * wDeck,char * wFace[],char * wSuit[]) //初始化发牌
{ 
     int i;
     for(i=0;i<52;i++){
          wDeck[i].face=wFace[i%13];
          wDeck[i].suit=wSuit[i/13];
     }
}
void shuffle(Card * wDeck) //洗牌
{
   int i, j;
   Card temp;
   
   for(i=0;i<52;i++){
       j=rand()%52;
       temp=wDeck[i];
       wDeck[i]=wDeck[j];
       wDeck[j]=temp;
   }
}
/*洗牌思路:每张牌都和随机抽取的另外一张牌交换一次*/
void deal(Card * wDeck)//发牌
{
   int i;
   for(i=0;i<52;i++){
      printf("%5s of %- 8s%c",wDeck[i].face,
                 wDeck[i].suit,  (i+1)%2?'\t':'\n');
   }
}

//发牌
int a[n]与动态申请的差别

发布了26 篇原创文章 · 获赞 18 · 访问量 1640

猜你喜欢

转载自blog.csdn.net/qq_40774136/article/details/103522499