用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