1 #include "stdafx.h"
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<time.h>
5
6 int comp(const void *a,const void *b);
7 void print(int num,int p[],char cardValue[]);
8
9 int _tmain(int argc, _TCHAR* argv[])
10 {
11 srand((unsigned)time(0));
12 int n=rand();
13 static char cardValue[]={'A','2','3','4','5','6','7'
14 ,'8','9','10','J','Q','K'};
15 int a[53];//牌数
16 int p1[13],p2[13],p3[13],p4[13];//4位玩家的牌数
17 int psub1=0,psub2=0,
18 psub3=0,psub4=0,t=1,temp=0,flag=0,i;
19 while(t<=52)
20 {
21 temp=rand()%52;//中转变量
22 for(flag=1,i=1;i<=t&&flag;i++)
23 {
24 if(temp==a[i])//a跳转赋值
25 flag=0;
26 }
27 if(flag) //平均给4个玩家发13张不同的牌
28 {
29 a[t++]=temp;
30 if(t%4==0) //0 1 2 3 轮流给玩家发牌
31 p1[psub1++]=a[t-1];
32 if(t%4==1) //0 1 2 3 轮流给玩家发牌
33 p2[psub2++]=a[t-1];
34 if(t%4==2) //0 1 2 3 轮流给玩家发牌
35 p3[psub3++]=a[t-1];
36 if(t%4==3) //0 1 2 3 轮流给玩家发牌
37 p4[psub4++]=a[t-1];
38 }
39 }
40 qsort(p1,13,sizeof(int),comp); //传入函数指针
41 qsort(p2,13,sizeof(int),comp);
42 qsort(p3,13,sizeof(int),comp);
43 qsort(p4,13,sizeof(int),comp);
44 print(1,p1,cardValue);
45 print(2,p2,cardValue);
46 print(3,p1,cardValue);
47 print(4,p1,cardValue);
48 getchar();
49 return 0;
50 }
51
52 void print(int num,int p[],char cardValue[])
53 {
54 int i;
55 printf("\n 玩家:%d \006 ",num);
56 for(i=0;i<13;++i)
57 {
58 //每个玩家都要有4个花色
59 if(p[i]/13==0)
60 printf("%c ",cardValue[p[i]%13]);
61 }
62 printf("\n \003 ");
63 for(i=0;i<13;++i)
64 {
65 //每个玩家都要有4个花色
66 if(p[i]/13==1)
67 printf("%c ",cardValue[p[i]%13]);
68 }
69 printf("\n \005 ");
70 for(i=0;i<13;++i)
71 {
72 //每个玩家都要有4个花色
73 if(p[i]/13==2)
74 printf("%c ",cardValue[p[i]%13]);
75 }
76 printf("\n \004 ");
77 for(i=0;i<13;++i)
78 {
79 //每个玩家都要有4个花色
80 if(p[i]/13==3)
81 printf("%c ",cardValue[p[i]%13]);
82 }
83 }
84 int comp(const void *a,const void *b)
85 {
86 return (*(int *)a-*(int*)b); //升序
87 //反之降序 (*(int *)b-*(int*)a)
88 }
89