100.扑克牌自动发牌

举报
C语言与CPP编程 发表于 2022/05/03 22:36:13 2022/05/03
【摘要】 #include<stdlib.h>#include<stdio.h>int comp(const void *j,const void *i);void p(int p,int b[],char n[]);void main(){ static char n[]={'2','3','4','5','6',...

  
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. int comp(const void *j,const void *i);
  4. void p(int p,int b[],char n[]);
  5. void main()
  6. {
  7. static char n[]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
  8. int a[53],b1[13],b2[13],b3[13],b4[13];
  9. int b11=0,b22=0,b33=0,b44=0,t=1,m,flag,i;
  10. clrscr();
  11. puts("******************************************************");
  12. puts("* This is an Automatic Dealing Card program! *");
  13. puts("* In one game, 52 cards are divided into 4 groups. *");
  14. puts("******************************************************");
  15. printf(" >> ----- Each person's cards are as follows. -------");
  16. while(t<=52) /*控制发52张牌*/
  17. { m=random(52); /*产生0到51之间的随机数*/
  18. for(flag=1,i=1;i<=t&&flag;i++) /*查找新产生的随机数是否已经存在*/
  19. if(m==a[i]) flag=0; /*flag=1:产生的是新的随机数
  20. flag=0:新产生的随机数已经存在*/
  21. if(flag)
  22. {
  23. a[t++]=m; /*如果产生了新的随机数,则存入数组*/
  24. if(t%4==0) b1[b11++]=a[t-1]; /*根据t的模值,判断当前*/
  25. else if(t%4==1) b2[b22++]=a[t-1]; /*的牌应存入哪个数组中*/
  26. else if(t%4==2) b3[b33++]=a[t-1];
  27. else if(t%4==3) b4[b44++]=a[t-1];
  28. }
  29. }
  30. qsort(b1,13,sizeof(int),comp); /*将每个人的牌进行排序*/
  31. qsort(b2,13,sizeof(int),comp);
  32. qsort(b3,13,sizeof(int),comp);
  33. qsort(b4,13,sizeof(int),comp);
  34. p(1,b1,n); p(2,b2,n); p(3,b3,n); p(4,b4,n); /*分别打印每个人的牌*/
  35. printf(" >> ----------- Press any key to quit... ------------");
  36. getch();
  37. }
  38. void p(int p,int b[],char n[])
  39. {
  40. int i;
  41. printf("\n Person No.%d \006 ",p); /*打印黑桃标记*/
  42. for(i=0;i<13;i++) /*将数组中的值转换为相应的花色*/
  43. if(b[i]/13==0) printf(" %c",n[b[i]%13]); /*该花色对应的牌*/
  44. printf("\n \003 "); /*打印红桃标记*/
  45. for(i=0;i<13;i++)
  46. if((b[i]/13)==1) printf(" %c",n[b[i]%13]);
  47. printf("\n \004 "); /*打印方块标记*/
  48. for(i=0;i<13;i++)
  49. if(b[i]/13==2) printf(" %c",n[b[i]%13]);
  50. printf("\n \005 "); /*打印梅花标记*/
  51. for(i=0;i<13;i++)
  52. if(b[i]/13==3||b[i]/13==4) printf(" %c",n[b[i]%13]);
  53. printf("\n");
  54. }
  55. int comp(const void *j,const void *i) /*qsort调用的排序函数*/
  56. {
  57. return(*(int*)i-*(int*)j);
  58. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124558408

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。