第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;
}