C语言实现斗地主牌型判断 - “三带一”

本文将使用C语言代码实现斗地主牌型判断,重点讲解如何判断手牌是否为“三带一”牌型。

输入格式

第一行输入一个整数T,代表斗地主的轮数。

接下来T行,每行输入一个长度为4的字符串,代表小蓝的手牌。

字符'A','2','3','4','5','6','7','8','9','X','J','Q','K'代表牌面,不包含大小王。

输出格式

输出T行,每行一个字符串,如果当前牌是“三带一”牌型,输出'yes',否则输出'No'。

C语言代码示例

#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;
    int oneCount = 0;
    for (int i = 0; i < 13; i++) {
        if (counts[i] == 3) {
            threeCount++;
        } else if (counts[i] == 1) {
            oneCount++;
        }
    }
    return (threeCount == 1) && (oneCount == 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;
}

代码解释

在该代码中,我们定义了一个名为isThreeWithOne的函数,用于判断手牌是否为“三带一”牌型。该函数首先统计每个牌面的数量,然后判断是否存在一个牌面数量为3,另一个牌面数量为1。如果满足条件,则返回true,否则返回false。

main函数中,我们首先读取输入的轮数T,然后通过循环依次处理每一轮的手牌。对于每一轮,我们调用isThreeWithOne函数判断手牌是否为“三带一”牌型,根据判断结果输出相应的结果。

总结

本文介绍了使用C语言实现斗地主牌型判断的方法,并重点讲解了如何判断手牌是否为“三带一”牌型。希望本文能够帮助您理解“三带一”牌型的判断逻辑,并掌握使用C语言实现牌型判断的方法。

C语言实现斗地主牌型判断 - “三带一”

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

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