C语言实现随机抽取纸牌程序

本文实例为大家分享了C语言实现随机抽取纸牌的具体代码,供大家参考,具体内容如下

程序设计要求

本程序负责发一副标准纸牌,每张标准纸牌都有一种花色(梅花、方块、黑桃、红桃)和一个等级(2,3,4,5,6…K,A)。程序需要用户指明手机有几张牌。

程序设计流程

1 . 使用库函数和时间函数,用time函数返回当前时间,用一个数表示,srand函数初始化C语言的随机数生成器。通过把time函数返回值传递给srand可以避免程序每次运行发同样的牌。rand函数产生随机数,通过%缩放。

2 . 使用二位数组来进行数据记录。4行表示每种花色,13列表示每种等级。

3 . 程序开始时,数组元素都为false,每随机抽取一张纸牌时,检查in_hand对应元素真假,如果为真,则抽取其他纸牌,如果为假,记录到数组元素当中,提醒我们这张牌已经记录过了。

效果展示

完整代码

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <time.h>
#include <stdlib.h>
 
 
# define num_rates ((int) (sizeof(value)/sizeof(value[0])))
# define initial_balance 100.00
  
#define num_suits 4
#define num_ranks 13
  
int main(){
 
bool in_hand[num_suits][num_ranks] = {false};
int num_cards,rank,suit;
 
const char rank_code[] = { '2','3','4','5','6','7','8','9',
    't','j','q','k','a'};
const char suit_code[] = { 'c','d','h','s'};
printf("enter number\n");
scanf("%d",&num_cards);
 
printf("your hands\n");
while(num_cards>0){
 suit = rand()%num_suits;
 rank = rand()%num_ranks;
 if(!in_hand[suit][rank]){
 in_hand[suit][rank] = true;
 num_cards--;
 printf(" %c%c",rank_code[rank],suit_code[suit]);
 }
}
printf("\n");
return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现随机抽取纸牌

    利用数组实现从一副牌中随机抽取纸牌,供大家参考,具体内容如下 一.项目要求 本程序负责发一副标准纸牌,每张标准纸牌都有一种花色(梅花.方块.黑桃.红桃)和一个等级(2,3,4,5,6-K,A).程序需要用户指明手机有几张牌,格式为: Enter number of cards in hand:____ your hand: _____ 二.原理 1.使用库函数 time函数返回当前时间,用一个数表示,srand函数初始化C语言的随机数生成器.通过把time函数返回值传递给srand可以避免程序每

  • C语言实现随机抽取纸牌程序

    本文实例为大家分享了C语言实现随机抽取纸牌的具体代码,供大家参考,具体内容如下 程序设计要求 本程序负责发一副标准纸牌,每张标准纸牌都有一种花色(梅花.方块.黑桃.红桃)和一个等级(2,3,4,5,6…K,A).程序需要用户指明手机有几张牌. 程序设计流程 1 . 使用库函数和时间函数,用time函数返回当前时间,用一个数表示,srand函数初始化C语言的随机数生成器.通过把time函数返回值传递给srand可以避免程序每次运行发同样的牌.rand函数产生随机数,通过%缩放. 2 . 使用二位数

  • 使用JS编写的随机抽取号码的小程序

    刚开始学习JavaScript,写了一个随机抽取号码的小程序,附上body里的所有代码,供大家参考. 本程序可以实现功能如下: 1.在文本框中输入抽号最大值 2.点击按钮,开始抽号,随机生成1~最大值之间的整数 3.已经抽取的号码不能再次抽取到,保证号码的唯一性 4.将号码结果放入result中显示出来 5.将已经生成的号码存入exist中显示出来 具体代码如下: <body> <input type="text" id="txt" placeho

  • 基于JavaScript实现简单的随机抽奖小程序

    对于抽奖这样的小程序使用诸如VB,Delphi等工具来实现会比较的方便,由于本人机器上没有装这样的应用程序,所以只能另寻其道.为了使抽奖程序能够无需配置平台直接可以在任何一台机器上运行,开发工具和编译运行工具也能够经可能简单(诸如text文本即可编辑,window系统自带的浏览器即可编译运行的情况),决定尝试使用javascript来做.本人对javascript的研究不深,平时主要用于网站开发中对来自客户端的数据进行有效性判断(基于安全性的考虑,安全性要求高的网站尽量使用服务器端语言对数据有效

  • php中通过数组进行高效随机抽取指定条记录的算法

    php使用数组array_rand()函数进行高效随机抽取指定条数的记录,可以随机抽取数据库中的记录,适合进行随机展示和抽奖程序. 该算法主要是利用php的array_rand()函数,下面看一下array_rand()函数的主要功能: array_rand-从数组中随机取出一个或多个单元 mixed array_rand(array $input[,int $num_req] ) array_rand()在你想从数组中取出一个或多个随机的单元时相当有用.它接受input作为输入数组和一个可选的

  • java+sql2005 随机抽取试题的代码

    复制代码 代码如下: import java.awt.BorderLayout; import java.util.*; import java.awt.event.*; import java.awt.Container; import java.awt.EventQueue; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Stateme

  • Java利用数组随机抽取幸运观众如何实现

    编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名. 思路如下: 定义输入框的按键事件,使用KeyEvent类的getKeyChar()函数判断其是否是回车字符,若不是则不作处理:使用isEmpty()函数判断文本框中是否有字符串,如果没有字符串则不做处理:若为合法输入则通过JTextArea类的append()方法把输入人名与回车符添加到人员列表:使用selectAll()方法选择文本框所有字符:定义点击"抽取&

  • sql 随机抽取几条数据的方法 推荐

    传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序里的时候就不管用了,总是那几条,于是对这个东西进行了一个研究得出另一种方法: newid() 可以产生如:"49869293-8891-4B31-B88E-A584D9621490" 这样的数据结果,而且每一行产生的都不同,这样的话,我们就可以在查询的时候给结果集里加上这么一个列,比如:

  • JS实现随机抽取三人

    因为实验室每周需要三人来做报告,所以用JS来做一个随机抽取的页面. 首先,先说一下需求.研二同学共5人,一人是单独的一组,研一同学共9人,同时九人分为三组.所以共八组,每周报告的三人从八组中抽取,这三人不能有两人或者两人以上在同一组. 程序思路1 1.将研一的三组建成三个小的数组,从这三个数组里每组随机抽取一人: 2. 将第一步里抽取出来的三人和研二的五人放在一起,组成一个新的数组,在从中随机抽取三人: 3. 若随机抽取的三人存在上述情况,则返回第一步,重新随机抽取,直到不存在第二步的情况,然后

  • java编写一个花名随机抽取器的实现示例

    一.程序效果 还记得以前上课的时候,老师会用自己写的一个抽取器抽取同学回答问题,当时想着我也要做一个,假期没事干,自学了java,闲来无聊,我也写一个,但是写的没有老师好,哈哈,好了说一下思路,先把界面布置好,然后逐一实现每个按钮的功能,其实也没什么难的. 二.需要用到的包 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.util.*; 三.代码 1.相

随机推荐