c语言随机抽取小程序_C/C++学习日记:C语言的随机发牌小程序(红桃、黑桃、梅花、方块)...

本文主要是介绍c语言随机抽取小程序_C/C++学习日记:C语言的随机发牌小程序(红桃、黑桃、梅花、方块)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:做一个随机发牌的C语言程序,供大家学习,思考。未做任何注释,有测试时候留下的一些输出语句,一遍方便测试。

babc94342db6cee20e20d3484d5210ba.png

#include

#include

#include

int main()

{

int a[60];

int b[60];

int w = 0;

int wi,wj,wii;

int i,j,index,x=0,m;

for(i=0;i<54;i++)

a[i]=i+1;

srand((unsigned)time(0));

for(i=0;i<54;)

{

index=rand()%54;

if(a[index]!=0)

{

b[i]=a[index];

//printf("%d ",b[i]);

a[index]=0;

++i;

}

}

printf("\n说明:\n");

printf("*******************\n");

printf("**    红桃 %c    ",3);

printf("**\n");

printf("**    方块 %c    ",4);

printf("**\n");

printf("**    梅花 %c    ",5);

printf("**\n");

printf("**    黑桃 %c    ",6);

printf("**\n");

printf("**    大王 A    **\n**    小王 a    **\n");

printf("*******************\n");

printf("\n请输入打牌人数:\n");

scanf("%d",&w);

wi = 54/w;

wj = 54%w;

//printf("%d,%d",wi,wj);

for (j = 0;j < w;j++)

{

m = 0;

printf("\n\n第%d个人的牌\n",j+1);

wj --;

if (wj>=0)

wii = wi + 1;

else

wii = wi;

//红桃

printf("红桃 %c ",3);

printf(":");

for(i = j*wii;i

{

if (b[i]<=13&&b[i]>0)

{

m++;

if (b[i]==11)

printf("J ");

else if (b[i]==12)

printf("Q ");

else if (b[i]==13)

printf("K ");

else

printf("%d ",b[i]);

}

}

//方块

printf("\n方块 %c ",4);

printf(":");

for(i = j*wii;i

{

if (b[i]<=26&&b[i]>13)

{

m++;

ffe8f12334efd43acdbc8e1bf9d9656c.png

b[i] = b[i]-13;

if (b[i]==11)

printf("J ");

else if (b[i]==12)

printf("Q ");

else if (b[i]==13)

printf("K ");

else

printf("%d ",b[i]);

}

}

//梅花

printf("\n梅花 %c ",5);

printf(":");

for(i = j*wii;i

{

43fcabb6c3a762f869bb7bc134cd8e6e.png

if (b[i]<=39&&b[i]>26)

{

m++;

b[i] = b[i]-26;

if (b[i]==11)

printf("J ");

else if (b[i]==12)

printf("Q ");

else if (b[i]==13)

printf("K ");

else

printf("%d ",b[i]);

}

}

//黑桃

printf("\n黑桃 %c ",6);

printf(":");

for(i = j*wii;i

{

if (b[i]<=52&&b[i]>39)

{

m++;

b[i] = b[i]-39;

if (b[i]==11)

printf("J ");

else if (b[i]==12)

printf("Q ");

else if (b[i]==13)

printf("K ");

else

printf("%d ",b[i]);

}

}

//大小王

printf("\n大小王 A or a :");

for(i = j*wii;i<=(j+1)*wii;i++)

{

if (b[i]==53)

{

m++;

printf("A ");

}

if (b[i]==54)

{

m++;

printf("a ");

}

}

printf("\n总共:%d张牌!!!",m);

}

}

测试结果,由于屏幕显示有限,我只做2个人分牌的测试,其他的自己测试吧

3de0b1cd0663be3c230accbd61e45ad3.png

这篇关于c语言随机抽取小程序_C/C++学习日记:C语言的随机发牌小程序(红桃、黑桃、梅花、方块)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793982

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a