用C语言编写洗牌发牌程序,供大家参考,具体内容如下
题目
现在只有一套扑克牌中52张副牌(无大王小王),包含了4种花色的牌
现在打乱顺序后分给甲乙丙丁四人
全部分配完毕后,输出甲乙丙丁四人所获得的扑克大小及花色
再经过排序,将甲乙丙丁四人的牌按由大到小顺序输出到屏幕上
要素提取
略
补充
牌面上的数字/字母由小到大为:
3 4 5 6 7 8 9 10 J Q K A 2
牌面上的花色由小到大为:
方块 梅花 红桃 黑桃
思路
略
可能出现的问题
略
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#include<stdio.h> #include<Windows.h> #include<time.h> int main() { int pai[52],luan[52]; //pai为初始未打乱(由小到大)的牌,luan为打乱后的牌 int a[13],b[13],c[13],d[13]; //分别是甲乙丙丁 int i,j,t=0; void print1( int a[], int number); //输出number张牌 void sort( int a[]); //排序 printf ( "【收集扑克牌……】\n" ); for (i=3;i<=15;i++) //先把牌牌收集整齐 for (j=1;j<=4;j++,t++) pai[t]=i*10+j; printf ( "【收集完毕!】\n【以下为本次实验所用到的扑克牌:】\n" ); print1(pai,52); printf ( "(排序:依照斗地主规则由小到大)\n(特殊:无大王小王)\n" ); printf ( "【荷官灵丹突然出现,将它打乱……】\n" ); srand ( time (0)); for (j=0,i=0;j<52;j++) //然后将它们打乱 { while (pai[i]==0) i= rand ()%52; luan[j]=pai[i]; pai[i]=0; } printf ( "【变这样:】\n" ); print1(luan,52); printf ( "【然后荷官灵丹将牌逐个发给甲乙丙丁】\n【甲一张、乙一张、丙一张、丁一张、甲一张……】\n【好了!】\n" ); for (i=0,j=0;i<13;i++,j=j+4) //一轮轮分配给甲乙丙丁 { a[i]=luan[j]; b[i]=luan[j+1]; c[i]=luan[j+2]; d[i]=luan[j+3]; } printf ( "甲:" ); print1(a,13); printf ( "乙:" ); print1(b,13); printf ( "丙:" ); print1(c,13); printf ( "丁:" ); print1(d,13); printf ( "【甲乙丙丁看了一下手中的牌,暗骂道:你个狗灵丹发牌也不知道发整齐一点,搞的我还要整理……】\n" ); sort(a); sort(b); sort(c); sort(d); printf ( "【甲乙丙丁整理了一下手中的牌】\n" ); printf ( "甲:" ); sort(a); print1(a,13); printf ( "乙:" ); sort(b); print1(b,13); printf ( "丙:" ); sort(c); print1(c,13); printf ( "丁:" ); sort(d); print1(d,13); printf ( "【等到甲乙丙丁将手中的牌整理完毕】\n【荷官灵丹:呃……游戏规则是什么?】\n【甲一拳、乙一拳、丙一拳、丁一拳……】\n" ); return 0; } void print1( int a[], int number) { int i; int m,n; for (i=0;i<number;i++) { m=a[i]%10; n=a[i]/10; if (m==1) printf ( "方块" ); if (m==2) printf ( "梅花" ); if (m==3) printf ( "红桃" ); if (m==4) printf ( "黑桃" ); if (n>=3&&n<=10) printf ( "%d " ,n); if (n==11) printf ( "J " ); if (n==12) printf ( "Q " ); if (n==13) printf ( "K " ); if (n==14) printf ( "A " ); if (n==15) printf ( "2 " ); } printf ( "\n" ); } void sort( int a[]) { int i,j,t,k; for (i=0;i<13;i++) //13个数,选择12次(第13个数自动落到第13位,故不需第13次) for (j=i,t=i;j<13;j++) if (a[j]>a[t]) { k=*(a+t); *(a+t)=*(a+j); *(a+j)=k; } } //花色:黑桃、红桃、梅花、方块分别为4,3,2,1 //数字3~10即为其本身,字母/数字J、Q、K、A、2分别为11 12 13 14 |
程序运行图片
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_33531030/article/details/103463352