C语言实现斗地主牌型判断:三带一

本文将介绍使用C语言实现斗地主牌型中“三带一”的判断逻辑,并提供完整的代码示例。

问题描述

输入一个长度为4的字符串,代表小蓝的手牌。字符'A', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K'代表牌面,不包含大小王。判断当前牌是否为“三带一”牌型。

代码实现

#include <stdio.h>
#include <stdbool.h>

bool isThreeWithOne(char hand[]) {
    int counts[13] = {0}; // 记录每个牌面的数量
    for (int i = 0; i < 4; i++) {
        char card = hand[i];
        if (card >= '2' && card <= '9') {
            counts[card - '2']++;
        } else {
            switch (card) {
                case 'A':
                    counts[0]++;
                    break;
                case 'X':
                    counts[9]++;
                    break;
                case 'J':
                    counts[10]++;
                    break;
                case 'Q':
                    counts[11]++;
                    break;
                case 'K':
                    counts[12]++;
                    break;
            }
        }
    }
    int threeCount = 0;
    for (int i = 0; i < 13; i++) {
        if (counts[i] >= 3) {
            threeCount++;
        }
    }
    return threeCount == 1;
}

int main() {
    int T;
    scanf("%d", &T);

    for (int i = 0; i < T; i++) {
        char hand[5];
        scanf("%s", hand);

        if (isThreeWithOne(hand)) {
            printf("yes\n");
        } else {
            printf("no\n");
        }
    }

    return 0;
}

代码解释

  1. isThreeWithOne 函数:

    • 该函数用于判断给定的手牌是否为“三带一”牌型。
    • 首先定义一个整型数组 counts,用于记录每个牌面的数量。
    • 遍历手牌字符串,根据牌面字符对应地增加相应计数器的值。
    • 统计计数器大于等于3的牌面数量,如果只有1个牌面计数器大于等于3,则判断为“三带一”牌型,返回 true,否则返回 false
  2. main 函数:

    • 首先读取输入的轮数 T,用于表示需要判断多少组手牌。
    • 循环遍历每一组手牌,读取手牌字符串,并调用 isThreeWithOne 函数进行判断。
    • 根据判断结果输出 yesno,表示当前手牌是否为“三带一”牌型。

注意事项

  • 以上代码只实现了判断“三带一”牌型的逻辑,完整的斗地主规则可能包含更多牌型和特殊情况,需要根据实际需求进行进一步完善。
  • 该代码假设输入的手牌字符串长度为4,如果输入的长度不符合要求,可能会导致程序异常。
  • 该代码使用 scanf 函数读取输入,如果需要使用其他输入方式,请自行修改代码。

总结

本文介绍了使用C语言实现斗地主牌型判断中“三带一”的代码实现。代码通过统计每个牌面的数量,判断是否存在一个牌面数量大于等于3,从而判定是否为“三带一”牌型。示例代码包含完整的函数定义和主函数,并提供详细的注释解释。希望本文对您理解“三带一”牌型判断的代码实现有所帮助。

如果您需要了解其他斗地主牌型判断的实现方法,请随时提出您的问题!

C语言实现斗地主牌型判断:三带一

原文地址: https://www.cveoy.top/t/topic/0m3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录