C語言實現(xiàn)隨機抽取紙牌
利用數(shù)組實現(xiàn)從一副牌中隨機抽取紙牌,供大家參考,具體內(nèi)容如下
一、項目要求
本程序負責發(fā)一副標準紙牌,每張標準紙牌都有一種花色(梅花、方塊、黑桃、紅桃)和一個等級(2,3,4,5,6…K,A)。程序需要用戶指明手機有幾張牌,格式為:
Enter number of cards in hand:____
your hand: _____
二、原理
1.使用庫函數(shù)
time函數(shù)返回當前時間,用一個數(shù)表示,srand函數(shù)初始化C語言的隨機數(shù)生成器。通過把time函數(shù)返回值傳遞給srand可以避免程序每次運行發(fā)同樣的牌。rand函數(shù)產(chǎn)生隨機數(shù),通過%縮放。
2.利用二維數(shù)組記錄
程序采用in_hand二維數(shù)組對已經(jīng)選擇的牌進行記錄,4行表示每種花色,13列表示每種等級。
程序開始時,數(shù)組元素都為false,每隨機抽取一張紙牌時,檢查in_hand對應元素真假,如果為真,則抽取其他紙牌,如果為假,記錄到數(shù)組元素當中,提醒我們這張牌已經(jīng)記錄過了。
三、項目代碼
項目的具體代碼展示如下:
#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; }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C語言 while for do while循環(huán)體詳解用法
在不少實際問題中有許多具有規(guī)律性的重復操作,因此在程序中就需要重復執(zhí)行某些語句。一組被重復執(zhí)行的語句稱之為循環(huán)體,能否繼續(xù)重復,決定循環(huán)的終止條件2021-10-10C++ leetcode之刪除并獲得點數(shù)的示例代碼
這篇文章主要介紹了C++ leetcode之刪除并獲得點數(shù)的示例代碼,本文給大家分享問題解析及解決方案,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05