C语言编写洗牌发牌程序分享!

用C语言编写洗牌发牌程序,供大家参考,具体内容如下

题目

现在只有一套扑克牌中52张副牌(无大王小王),包含了4种花色的牌
现在打乱顺序后分给甲乙丙丁四人
全部分配完毕后,输出甲乙丙丁四人所获得的扑克大小及花色
再经过排序,将甲乙丙丁四人的牌按由大到小顺序输出到屏幕上

要素提取

补充

牌面上的数字/字母由小到大为:
3 4 5 6 7 8 9 10 J Q K A 2
牌面上的花色由小到大为:
方块 梅花 红桃 黑桃

思路

可能出现的问题

代码

  #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

程序运行图片

C语言编写洗牌发牌程序

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

—-想了解C语言编写洗牌发牌程序分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/483722.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐