谁来救救C 2022-11-24 17:23 采纳率: 100%
浏览 7
已结题

是模拟扑克牌发牌结果。 52张发给两个玩家

img

img

想问一下问题出在哪里,望指正,正在学习数组,另外也想问一下,中文英字符串的长度似乎有所区别?

  • 写回答

1条回答 默认 最新

  • a5156520 2022-11-24 19:27
    关注

    设置card的值那里的设置值错了,取0-51之间的值就可以了,即rand()%52 ,以与数组的下标相符合;

    然后发牌那里也是要从0开始到51结束,也是与数组下标相合;

    另外中文字符长度大部分编码系统是2个字节,英文字符是1个字节,要看具体是哪种编码;

    然后如果是模拟发牌,还需要考虑A到K的13种牌都需要有4张,每种牌的花色依次是四样,所以仅定义13张牌和4个花色,还需要加入一些控制条件来控制每种牌有四种,然后花色也依次是四样,所以可能实现有点复杂,这里仅简单用自定义出的52张牌的二维字符数组来实现这一点。

    代码如下:

    参考链接:
    C--中文汉字占用字节长度(字符集和字符编码)_worthsen的博客-CSDN博客_c语言一个汉字占几个字节

    #include <stdio.h>
    #include <time.h>  //为time()函数提供函数原型 
    #include <stdlib.h> //为srand(), rand()函数 提供函数原型 
    
    int main(void){
        
    //    char sty[][5] = {"红心","方块-","梅花-","黑桃-"};
        char sty[][10]={"红心-A","红心-2","红心-3","红心-4","红心-5","红心-6","红心-7","红心-8","红心-9","红心-10","红心-J","红心-Q","红心-K",
                        "方块-A","方块-2","方块-3","方块-4","方块-5","方块-6","方块-7","方块-8","方块-9","方块-10","方块-J","方块-Q","方块-K",
                        "梅花-A","梅花-2","梅花-3","梅花-4","梅花-5","梅花-6","梅花-7","梅花-8","梅花-9","梅花-10","梅花-J","梅花-Q","梅花-K",
                        "黑桃-A","黑桃-2","黑桃-3","黑桃-4","黑桃-5","黑桃-6","黑桃-7","黑桃-8","黑桃-9","黑桃-10","黑桃-J","黑桃-Q","黑桃-K"};
    
        //char num[][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};                    
        int card[52]={0};
    
        int i;
        
        srand((unsigned)time(NULL));    
        for(i=0;i<52;i++){
            unsigned int a = rand()%52;
            if(card[a]==0){
                card[a]=i;
            }else{
                i--;
            }
        }
        
        printf("Player1:\n");
        i=0;
        while(i<26){
            int b,c,d;
            b=card[i];
            printf("%-7s, ",sty[b]);
            i++;
            if(i%6==0){
                printf("\n");
            }
        }
        printf("\nPlayer2:\n");
        i=26;
        while(i<52){
            int b=card[i];
            printf("%-7s, ",sty[b]);
            i++; 
            if((i-26)%6==0){
                printf("\n");
            }
        }
        
        return 0;
    } 
    

    img

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行