#include <stdio.h> #include <stdlib.h> #include <time.h> struct card{ int suit; int face; }; void deal(struct card *wdeck){ int i , m, t; static int temp[52] = {0}; srand(time(NULL)); // 放入时间戳作为随机种子 for (i = 0; i < 52; i++) { while (1) { m = rand() % 52; if (temp[m] == 0) { break; } } temp[m] = 1; // 找出一张还没定义的排 // 发牌的逻辑设计巧妙,值得学习 t = (i % 4) * 13 + (i /4); wdeck[t].suit = m / 13; wdeck[t].face = m % 13; } } int main(void){ int i; struct card deck[52]; const char *suit[] = {"Heart", "Diamond", "Club", "Spade"}; const char *face[] = {"A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"}; deal(deck); for (i=0; i<52; i++) { if (i % 13 == 0) { printf("Player %d:\n", i/13+1); } printf("%s of %s\n", face[deck[i].face], suit[deck[i].suit]); } return 0; }