C:检查一组五张牌是否组成葫芦

标签 c

这是我的代码:

#include <stdio.h>

int main(void) {
    int i;
    int num[13] = {0};
    char poker[5];

    // input a set of five cards
    for (i = 0; i < 5; i++) {
        scanf(" %c", &poker[i]);
    }

    for (i = 0; i < 5; i++) {
        if (poker[i] == '10') num[9]++;  // how do I modify this line?
        if (poker[i] == 'J')  num[10]++;
        if (poker[i] == 'Q')  num[11]++;
        if (poker[i] == 'K')  num[12]++;
        if (poker[i] == 'A')  num[0]++;
        if (poker[i] >= '2' && poker[i] <= '9') {
            num[poker[i] - '0' - 1]++;
        }
    }

    int check = 1;

    for (i = 0; i < 13; i++) {
        // if num[i] != 2 or 3 then it's not full house
        if (num[i] == 1 || num[i] > 3) {
            check = 0;
        }
    }

    if (check) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }

    return 0;
}

一切正常,除了包含“10”的输入数据。

标准输入示例

10 10 10 K A

预期标准输出

但是,我的程序会将其识别为满座。

我认为出错的原因是“10”实际上不是一个字符。

有没有办法修改我的代码并解决这个问题?

谢谢!

最佳答案

尝试使用不同的字符来表示 10,例如“T”

关于C:检查一组五张牌是否组成葫芦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46866299/

相关文章:

Python C API 性能提升?

c++ - 如何在 Release模式下正确编写基准程序?

python - C DLL 和 Python 应用程序之间的 IPC 来处理数据

c - 不太清楚如何使用 fread 在 c 中存储字符

c - 是否可以调用 C 函数,将其名称作为字符串?

c - 在 Turbo C 中切换图形和文本模式

C - 这两个结构声明有什么区别?

用尽可能少的分配连接 lex 中的单词

c - 使用fgetc读取文件并将句子添加到链表中

const char * 与 const char ** 函数参数