2301_80837523 2023-11-04 09:35 采纳率: 71.4%
浏览 18
已结题

c语言定义一副扑克牌(没有大小王),要求随机抽出十张牌并打印出来(注意:扑克 牌没有两张一样的牌,花色可以用h(红桃),s(黑桃),c(梅花),d(方块)表示,其中A用‘A‘表示

定义一副扑克牌(没有大小王),要求随机抽出十张牌并打印出来(注意:扑克
牌没有两张一样的牌,花色可以用h(红桃),s(黑桃),c(梅花),d(方块)表示,其中A用‘A‘表示
希望解答用c语言且尽量简单易看懂,谢谢

  • 写回答

3条回答 默认 最新

  • 关注

    先定义好字符数组,然后用rand随机产生数字,数字作为字符数组的下标来获取花色和扑克牌的大小,获取数字是需要判断是否已经获取过,如果已经获取过,需要重新生成。
    运行结果:

    img

    代码如下:

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    int main()
    {
        char color[5]={'h','s','c','d'}; //花色
        char nmb[]={'A','2','3','4','5','6','7','8','9','x','J','Q','K'}; //扑克牌大小,10先用x表示
        int index,a[10],i,j,k=0;
        srand((unsigned int)time(0)); //生成随机数种子
        for(i=0;i<10;i++) //随机抽取10张
        {
            index = rand()%4;//生成花色
            printf("%c",color[index]);
            while(1)
            {
                index = rand()%13; //生成数字
                //判断数字是否已经存在
                for(j=0;j<k;j++)
                {
                    if(a[j]==index) //已经存在
                        break;
                }
                if(j==k) //没有生成过
                {
                    if(nmb[index]=='x') //将x替换成10
                        printf("10");
                    else
                        printf("%c",nmb[index]);
                    a[k] = index; //将索引保存到数组中
                    k++; //
                    break;
                }
            }
            printf("\n");
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

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