C語言程式設計-現代方法 第二版 第8.2.2 小節程式碼 發牌
阿新 • • 發佈:2020-12-13
第8.2.2 小節程式碼 發牌
//This is a comment
//Author:King
//Time:2020/12/6
//Reference:C Programming:A Modern Approach,Second Edition
/***************************************************************
8.2.2 小節程式碼 發牌
****************************************************************/
#include <stdio.h>
#include <stdbool.h> // C99 only
#include <time.h>
#include <stdlib.h>
#define NUM_SUITS 4 //4種花色
#define NUM_RANKS 13 //13個等級
int main(void)
{
bool in_hand[NUM_SUITS][NUM_RANKS]={false};
int rank,suit;
int num_cards;
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'};
srand((unsigned) time(NULL)); //把time函式返回值傳遞給srand函式避免產生同樣的數
printf("Enter number of cards in hand:"); //說明需要發幾張牌
scanf("%d",&num_cards);
printf("Your hand:");
while(num_cards > 0)
{
suit = rand() % NUM_SUITS; //限定在NUM_SUITS範圍
rank = rand() % NUM_RANKS; //限定在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");
system("pause"); //加入該函式後可以使得產生的exe單獨執行,不會發生閃退。也可以加入其它函式使得main函式無法返回即可。如while(1)、getchar() 等
return 0;
}