3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
[C/C++ 演算法]- 洗撲克牌(亂數排列) 剛才找資料時發現一個C/C++的教學網站,趕快發揮(C/P)的長才將它備份來,有需要的同好,歡迎來(C/P)一下^^。 拷貝來源:http://openhome.cc/Gossip/AlgorithmGossip/http://openhome.cc/Gossip/AlgorithmGossip/ShuffleCard.htm #include #include #include #include #define N 52 typedef struct { char suit[3]; char symbol[3]; } Card; void shuffle(Card*); void card(int, char*); void suit(int, char*); void symbol(int, char*); int main(void) { srand(time(0)); Card cards[N]; shuffle(cards); int i; for(i = 0; i < N; i++) { printf("%s%s%c", cards[i].suit, cards[i].symbol, (i + 1) % 13 ? ' ' : '\n'); } return 0; } void shuffle(Card* cards) { int i; for(i = 0; i < N; i++) { suit(i + 1, cards[i].suit); symbol(i + 1, cards[i].symbol); } for(i = 0; i < N; i++) { int j = rand() % 52; Card tmp = cards[i]; cards[i] = cards[j]; cards[j] = tmp; } } void suit(int number, char* suit) { switch((number - 1) / 13) { case 0: strcpy(suit, "桃"); break; case 1: strcpy(suit, "心"); break; case 2: strcpy(suit, "磚"); break; case 3: strcpy(suit, "梅"); } } void symbol(int number, char* symbol) { int remain = number % 13; switch(remain) { case 0: sprintf(symbol, "%c ", 'K'); break; case 1: sprintf(symbol, "%c ", 'A'); break; case 11: sprintf(symbol, "%c ", 'J'); break; case 12: sprintf(symbol, "%c ", 'Q'); break; default: sprintf(symbol, "%-2d", remain); } }

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦