c语言发牌洗牌问题使用了结构体

为啥输出不出来东西,感觉思路没得错呀

题目是这样的:
#include <stdio.h>

typedef struct
{   int  suit;  // 花色 1..4   1~4分别代表梅花,方块,红桃,黑桃
    int  rank;  // 牌点 2..14 其中11~14分别代表J,Q,K,A
} Poker;

void SortCard(Poker cards[], int n)
{   int i,j,p;  Poker t;

    /*  请在此处补上部分代码,实现程序的功能  */ 
}

void PrintCard(Poker cards[], int n)
{   char suit[][5]={"","梅花","方块","红桃","黑桃"};
    char rank[]="JQKA";
    int i;

    /*  请在此处补上部分代码,实现程序的功能  */ 
}

int main()
{   Poker player[13]={ {3,11},{4,3},{2,9},{3,8},{3,14},{1,10},
                  {1,7},{2,3},{3,6},{1,12},{4,13},{4,6},{2,5}};

    printf("发牌后玩家手中的13张牌:\n");
    PrintCard(player,13);
    SortCard(player,13);
    printf("\n理牌后玩家手中的13张牌:\n");
    PrintCard(player,13);

    getchar();
    return 0;
}

程序输出结果: 发牌后玩家手中的13张牌:
红桃-J 黑桃-3 方块-9 红桃-8 红桃-A 梅花-10 梅花-7 方块-3 红桃-6 梅花-Q 黑桃-K 黑桃-6 方块-5

理牌后玩家手中的13张牌:
梅花-7 梅花-10 梅花-Q 方块-3 方块-5 方块-9 红桃-6 红桃-8 红桃-J 红桃-A 黑桃-3 黑桃-6 黑桃-K


#include <stdio.h>

typedef struct
{   int  suit;
    int  rank;
} Poker;

void SortCard(Poker cards[], int n)
{   int i,j,p; Poker t;
for(i=0;i<n;i++)
 {
if(cards[i].suit>cards[i+1].suit)
  {
  t=cards[i];
  cards[i]=cards[i+1];
  cards[i+1]=t;
  }
 }


for (p=1;p<5;p++)
 {
 for(j=0;j<n;j++) 
  {
  if(p=cards[j].suit)
   {
  if(cards[j].rank>cards[j+1].rank)
    {
  t=cards[j];
  cards[j]=cards[j+1];
  cards[j+1]=t;
    }
   }
  }
 }
}



void PrintCard(Poker cards[], int n)
{   char suit[][5]={"","梅花","方块","红桃","黑桃"};
    char rank[]={"JQKA"};
    int i;
    int m,q;
    char a[n],b[n];
    for(i=0;i<n;i++)
   {
 if (cards[i].rank>=2||cards[i].rank<=10)
 a[i]=cards[i].rank;
 else
 {
 q=cards[i].rank-11;
 a[i]=rank[q];
   }
   }   
    for(i=0;i<n;i++)
 {
 m=cards[i].suit;
 b[i]=suit[i][m];    
    }
 for(i=0;i<n;i++)
    printf("%s-%s",b[i],a[i]);
}

int main()
{   
    Poker player[13]={ {3,11},{4,3},{2,9},{3,8},{3,14},{1,10},{1,7},{2,3},{3,6},{1,12},{4,13},{4,6},{2,5} };
    printf("发牌后玩家手中的13张牌:\n");
    PrintCard(player,13);
    SortCard(player,13);
    printf("\n理牌后玩家手中的13张牌:\n");
    PrintCard(player,13);
    getchar();
    return 0;
}