模拟人工洗牌。编写一个模拟人工洗牌的程序,讲洗好的牌分别发给四个人。(c语言)

简介: 模拟人工洗牌。编写一个模拟人工洗牌的程序,讲洗好的牌分别发给四个人。(c语言)

模拟人工洗牌。编写一个模拟人工洗牌的程序,讲洗好的牌分别发给四个人。


**输出格式要求:"\nNo.%d:" " %c%2d,"

为便于机器评分,假设随机数的种子为1.即srand(1);然后再调用 rand()函数,即可得到与测试用例相同的随机数序列。

基本思路:


1、先将牌的初始化为:


struct card deck[]={
{1,‘C’},{2,‘C’},{3,‘C’},{4,‘C’},{5,‘C’},{6,‘C’},{7,‘C’},
{8,‘C’},{9,‘C’},{10,‘C’},{11,‘C’},{12,‘C’},{13,‘C’},
{1,‘D’},{2,‘D’},{3,‘D’},{4,‘D’},{5,‘D’},{6,‘D’},{7,‘D’},
{8,‘D’},{9,‘D’},{10,‘D’},{11,‘D’},{12,‘D’},{13,‘D’},
{1,‘H’},{2,‘H’},{3,‘H’},{4,‘H’},{5,‘H’},{6,‘H’},{7,‘H’},
{8,‘H’},{9,‘H’},{10,‘H’},{11,‘H’},{12,‘H’},{13,‘H’},
{1,‘S’},{2,‘S’},{3,‘S’},{4,‘S’},{5,‘S’},{6,‘S’},{7,‘S’},
{8,‘S’},{9,‘S’},{10,‘S’},{11,‘S’},{12,‘S’},{13,‘S’},
};


2、随机选择两张牌(调用rand函数。为便于机器评分,假设随机数的种子为1.即srand(1);然后再调用 rand()函数,即可得到与测试用例相同的随机数序列。)交换两张牌。


3、输出交换52次(洗牌)以后的牌。前13张发给第1个人,然后,再13张发给第2个人,。。。


程序运行结果如下:


No.1: C 9, D10, C10, D 5, D 8, D13, H 5, H 1, C 5, D 7, D 1, C11,
No.2: C13, S12, C12, H10, D 2, H 3, S 9, S 6, S 4, S11, C 4, H13,
No.3: S10, H12, D 4, S 1, C 7, S 2, S 8, D 3, H 2, D 9, C 2, H11,
No.4: S13, C 6, S 5, H 9, S 7, C 3, D12, D11, D 6, H 8, C 1, H 7,
#include <stdio.h>
#include <stdlib.h>
struct card
{  
  int pips;
  char suit;
} ;
struct card deck[]={  
                    {1,'C'},{2,'C'},{3,'C'},{4,'C'},{5,'C'},{6,'C'},{7,'C'},
                    {8,'C'},{9,'C'},{10,'C'},{11,'C'},{12,'C'},{13,'C'},
                    {1,'D'},{2,'D'},{3,'D'},{4,'D'},{5,'D'},{6,'D'},{7,'D'},
                    {8,'D'},{9,'D'},{10,'D'},{11,'D'},{12,'D'},{13,'D'},
                    {1,'H'},{2,'H'},{3,'H'},{4,'H'},{5,'H'},{6,'H'},{7,'H'},
                    {8,'H'},{9,'H'},{10,'H'},{11,'H'},{12,'H'},{13,'H'},
                    {1,'S'},{2,'S'},{3,'S'},{4,'S'},{5,'S'},{6,'S'},{7,'S'},
                    {8,'S'},{9,'S'},{10,'S'},{11,'S'},{12,'S'},{13,'S'},
                    };
 shuffle(deck)
   struct card deck[];
 {  
   int i,j;
   srand(1);
   for(i=0;i<52;i++)
   {  
     j=rand()%52;
     swapcard(&deck[i],&deck[j]);
   }
 }
 swapcard(p,q)
   struct card *p,*q;
 {  
   struct card temp;
   temp=*p;
   *p=*q;
   *q=temp;
 }
 main()
 {  
   int i;
   shuffle(deck);
   for(i=0;i<52;i++)
     if(i%13==0)
        printf("\nNo.%d:",i/13+1);
      else
        printf(" %c%2d,",deck[i].suit,deck[i].pips);
 }
相关文章
|
2月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
4月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
107 1
|
4月前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
133 1
|
4月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
166 0
|
7月前
|
存储 C语言
简单c语言程序举例
简单c语言程序举例
83 1
|
2月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
3月前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
101 10
|
4月前
|
自然语言处理 编译器 C语言
C语言程序的编译
C语言程序的编译
69 2
|
5月前
|
前端开发 C语言 C++
C语言03----第一个程序HelloWorld(vs版)
C语言03----第一个程序HelloWorld(vs版)
|
6月前
|
C语言 图形学 C++