You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何为int变量赋值A、J、Q、K等字符以生成扑克牌牌组

两种实现方案参考

方案1:直接使用ASCII值赋值

是可以用ASCII值实现的,C语言里char类型本质就是整型,你可以直接把字符常量赋值给int类型的face字段:

card->face = 'A'; // 实际存储的是A对应的ASCII值65
card->face = 'J'; // 存储74
card->face = 'Q'; // 存储81
card->face = 'K'; // 存储75

这种写法可读性也不错,判断牌面的时候直接用字符比对即可,比如if (card->face == 'A')。唯一要注意的是要避免和其他数字面值冲突,比如你同时用1代表A的话就会出现逻辑混淆。

方案2:自定义整型映射(更推荐)

绝大多数扑克游戏都需要做牌面大小比较,ASCII值的大小顺序(A=65 < J=74 < K=75 < Q=81)不符合常规的牌面大小规则(A>K>Q>J),所以更建议你提前约定一套映射规则,比如:

  • A对应1或14(根据游戏规则定,A比K大就设为14,2最大可以额外设为15)
  • J对应11
  • Q对应12
  • K对应13

赋值示例:

// 规则示例:2=2~10=10,J=11,Q=12,K=13,A=14
card->face = 14; // 对应A
card->face = 11; // 对应J

后续需要展示牌面的时候,单独写个转换函数即可:

const char* face_to_str(int face) {
    switch(face) {
        case 14: return "A";
        case 11: return "J";
        case 12: return "Q";
        case 13: return "K";
        default:
            static char buf[3];
            sprintf(buf, "%d", face);
            return buf;
    }
}

这种方案扩展性更强,后续做大小比较、分数计算的时候都不用额外做转换处理。


内容的提问来源于stack exchange,提问作者user34343434

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:15:11