c++不会写,大佬救命!

hxyhxyhxyh 2023-10-12 21:04:51

   松雅自己拥有多间旅馆,有时候她会在她自己的旅馆里跟她的顾客玩纸牌。

        纸牌有52张,每张牌有一个花色,用一个大写字母表示(D-方片、C-草花、S-黑桃、H-红心),同时还有一个点数(2、3、4、5、6、7、8、9、T、J、Q、K、A),因此每张牌可以用两个字符来表示,例如2H,注意点数在前,花色在后,表示这张牌为红心2。

       开始时,桌面上有一张牌,玩家手中有5张牌,如果桌面上的牌的点数或者花色与玩家手中的任意一张牌的点数或者花色相同,则玩家赢得这张牌,输出“YES”,否则输出“NO”。

      
【输入形式】

       输入的第一行为一个字符串(两个字符),表示桌面上的牌。

       接下来的5行,每行一个字符串(两个字符),表示玩家手中的5张牌
【输出形式】

       如果玩家能赢得桌面的牌,则输出“YES”,否则输出“NO”。

...全文
115 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-10-12
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/8010874, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
Fuxi- 2023-10-16
  • 打赏
  • 举报
回复 1

下面是使用C++编写的根据规则判断玩家能否赢得桌面牌的代码:

#include <iostream>
#include <string>

using namespace std;

bool checkWin(string deck, string hand) {
    // 判断点数或花色是否相同
    if (deck[0] == hand[0] || deck[1] == hand[1]) {
        return true;
    }
    return false;
}

int main() {
    string deck, hand;

    // 读取桌面上的牌
    cin >> deck;

    // 读取玩家手中的5张牌并判断能否赢得桌面牌
    bool win = false;
    for (int i = 0; i < 5; i++) {
        cin >> hand;
        if (checkWin(deck, hand)) {
            win = true;
            break;
        }
    }

    // 输出结果
    if (win) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }

    return 0;
}

该代码首先定义了一个checkWin函数,用于判断桌面牌与玩家手中的一张牌是否能够赢得。在主函数中,首先读取桌面上的牌,然后循环读取玩家手中的5张牌,并通过调用checkWin函数判断能否赢得牌。如果能赢得任意一张牌,则将win标记为true,并跳出循环。最后根据win的值输出结果。

zero2100 2023-10-13
  • 打赏
  • 举报
回复

解析:首先需要定义一个函数,用于比较两张牌的大小。然后根据输入的桌面牌和玩家手中的牌,判断是否有赢得桌面牌的情况,输出结果。

代码实现如下:

#include <stdio.h>
#include <string.h>

int compare_cards(char card1[], char card2[]) {
    int num1 = card1[0] - '0';
    int num2 = card2[0] - '0';
    if (num1 == num2) {
        return card1[1] - 'A' - 'a' + card2[1] - 'A' - 'a';
    } else {
        return num1 - num2;
    }
}

int main() {
    char desktop_card[3];
    char player_cards[5][3];
    for (int i = 0; i < 5; i++) {
        scanf("%s", player_cards[i]);
    }
    scanf("%s", desktop_card);

    for (int i = 0; i < 5; i++) {
        if (compare_cards(desktop_card, player_cards[i]) == 0) {
            printf("YES
");
            return 0;
        }
    }
    printf("NO
");
    return 0;
}
  • 打赏
  • 举报
回复

解析:首先需要判断输入的牌是否在玩家手中的牌中,如果在则输出"YES",否则输出"NO"。

代码如下:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string tableCard;
    cin >> tableCard;

    string player1 = "23456789TJQKA";
    string player2 = "23456789TJQKA";
    string player3 = "23456789TJQKA";
    string player4 = "23456789TJQKA";
    string player5 = "23456789TJQKA";

    if (player1.find(tableCard) != string::npos || player2.find(tableCard) != string::npos || player3.find(tableCard) != string::npos || player4.find(tableCard) != string::npos || player5.find(tableCard) != string::npos) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }

    return 0;
}
吴亦风 2023-10-13
  • 举报
回复
@安全帽还是要戴的 有没有可能还要判断花色

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧