扑克牌发牌程序。给四个玩家发牌(不含大小王),要求每次发的牌都不一样。

 分析:
   52张牌采用1~52代表,其中黑桃对应1~13,红桃对应14~26,梅花对应27~39,方块对应40~52。例如: 28 是梅花2, 29 是梅花3。将52张牌(号)依次随机放入数组Deck中。方法是随机产生在数组中放置的位置 r (下标号),如果该位置已有牌(Deck[r] != 0), 则重新生成新的位置r,直到该位置无牌。 
 
 1 #include <iostream>
 2 #include<cstdlib>
 3 #include<ctime>
 4 using namespace std;
 5 
 6 int main() {
 7     int card, r, Deck[52];
 8     char pok_C[4][7] = {"黑桃","红桃","梅花","方块"};
 9     char pok_N[13][3] = 
10     {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
11     srand((unsigned)time (0));       //随机种子
12     
13     for(int i=0; i<=52; i++){
14         Deck[i] = 0;
15     }
16     for(card=1; card<=52; card++){
17         r = rand() % 52;
18         while(Deck[r] != 0){
19             r = rand() % 52;
20         }    
21         Deck[r] = card;
22     }
23     
24     cout<<"play1\t play2\t play3\t play4\n";
25     cout<<"-----------------------------------------\n";
26     
27     for(int i=0; i<52; i++){
28         cout<<pok_C[(Deck[i]-1)/13]<<pok_N[(Deck[i]-1)/13]<<'\t';
29         if(i%4 == 3){       //从0开始
30             cout<<endl;
31         }
32     }
33 
34     return 0;                                                 
35 }
运行结果:

 

posted @ 2020-05-21 16:18  yu10001  阅读(1330)  评论(0编辑  收藏  举报