#include/*定义输出与数组下标不一致的排符*/
void print(int t)
{int a=t%13;
switch(a)
{case 1:printf("2 ");break;
case 2:printf("a ");break;
case 3:printf("k ");break;
case 4:printf("q ");break;
case 5:printf("j ");break;
case 6:printf("10 ");break;
case 0:printf("3 ");break;
default :printf("%d ",16-a);
}
}
void main()
{/*定义存储每张牌的点数和花色*/
struct zhangxiao
{
int p;int r;int flag;
}pai[52],num;
int i,j,k;
char a[4]={'\005','\004','\006','\003'};
srand((unsigned)time(null));
for(i=0;i<=51;i++)
{pai[i].p=i+1;pai[i].r=rand();pai[i].flag=0;}
/*根据点数排序*/
for(i=0;i<=51;i++)
for(j=i+1;j<=51;j++)
if(pai[i].r > pai[j].r)
{num=pai[i];pai[i]=pai[j];pai[j]=num;}
/*根据花色排序*/
for(i=0;i<=3;i++)
for(j=i*13;j<=i*13+12;j++)
for(k=j+1;k<=i*13+12;k++)
if(pai[j].p > pai[k].p)
{num=pai[k];pai[k]=pai[j];pai[j]=num;}
/*控制输出对齐*/
printf("\n");
printf(" ");
for(i=0;i<=3;i++)
{
for(k=1;k<=4;k++)
{
printf("%c",a[k-1]);
for(j=i*13;j<=i*13+12;j++)
if(pai[j].p >= (k-1)*13+1 && pai[j].p <= (k-1)*13+12+1 && pai[j].flag==0)
{print(pai[j].p);pai[j].flag=1;}
}
if(i==0)printf("\n\n\n");
if(i==1)printf(" ");
if(i==2){printf("\n\n\n");printf(" ");}
if(i==3)printf("\n");
}
}