m0_68188057 2022-05-03 21:06 采纳率: 75%
浏览 45
已结题

c语言发牌问题,随机数问题

定义4个长度为13的一裝数组,设计电脑发牌程序,发出52张牌,输出发牌果。大于10的牌为J,Q,K,1为‘A’,每次运行发牌结果不能相同。

  • 写回答

1条回答 默认 最新

  • a5156520 2022-05-04 10:33
    关注

    一个实现,供参考:

    
    #include <stdio.h>
    #include <stdlib.h> //提供rand()函数原型 
    #include <time.h>  //提供time()函数原型 
    
    //给每个玩家发牌 
    void licensing(int * play){
            
        int i,j;
        srand(time(0)+rand()); //用当前时间再加随机数做随机数种子,以便让每一次随机不一样 
        //给玩家发牌 
        for(i=0;i<13;i++){                
            int num = rand()%13+1;  //rand()%13产生0~12的随机数, rand()%13+1产生1到13的随机数 
            //当产生的随机数 
            if(num==11){
                play[i]='J';
            }else if(num==12){
                play[i]='Q';
            }else if(num==13){
                play[i]='K';
            }else if(num==1){
                play[i]='A';
            }else if(num==10){ 
                play[i]=10;
            }else {
                play[i]=num+'0';
            }
            
        //    printf("num=%d,play[%d]=%c\n",num,i,play[i]);
        } 
    }
    
    //看牌 
    void watchCards(int * play){
        int i;
        for(i=0;i<13;i++){
            if(play[i]==10){
                printf("%2d ",play[i]);
            }else{
                printf("%2c ",play[i]);
            }
        }
        printf("\n");
    }
    
    
    int main(void){
        
        int playA[13];
        int playB[13];
        int playC[13];
        int playD[13];
        
        //给四个玩家发牌 
        licensing(playA);    
        licensing(playB);
        licensing(playC);
        licensing(playD);
        
        printf("四个玩家的牌如下:\n");
        //看牌 
        watchCards(playA);
        watchCards(playB);
        watchCards(playC);
        watchCards(playD);
        
    
    } 
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月3日