jackson_ros_nb 2022-02-14 22:54 采纳率: 100%
浏览 102
已结题

小丑谜题(2)小丑绑架了詹姆斯·戈登局长。 赶到现场时,布鲁斯只发现了小丑留下的若干张扑克。根据阿福的分析,扑克牌记录了戈登局长的位置:

问题遇到的现象和发生背景 小丑谜题(2)

描述

小丑绑架了詹姆斯·戈登局长。

赶到现场时,布鲁斯只发现了小丑留下的若干张扑克。根据阿福的分析,扑克牌记录了戈登局长的位置:

扑克牌有四个花色:黑桃、红桃、方块、梅花
四个花色的处理:黑桃将数字乘3、红桃将数字乘5、方块取数字的阶乘、梅花取数字整除10的模
所有黑桃和红桃处理后得到的数字相加,是哥谭市的街区号
所有方块和梅花处理后得到的数字相加,是哥谭市的门牌号
比如:方块5 红桃3 黑桃5 黑桃A 梅花Q

得到的地址是哥谭市33街区122号。

蝙蝠侠立刻出击,解救了戈登局长。然而,小丑在那里留下了更多的扑克,等着布鲁斯去破解……

输入
输入有2行

第一行整数n(n < 56),代表一共有n张扑克给出

第二行有n张扑克,扑克用花色+数字记录,每张扑克用空格分隔

输出
输出1行,内容是街区+空格+门牌

输入样例 1

5
方块5 红桃3 黑桃5 黑桃A 梅花Q
输出样例 1

33 122
提示

出现的扑克牌不会重复,扑克牌字母是大写

问题相关代码,请勿粘贴截图 #include

#include
using namespace std;

int numberjie(char* k)
{
char sum3=1;
for(int i=1;i<=k;i++)
{
sum3=sum3
i;
}
return sum3;
}

int main()
{
int n;
char sum1=0,sum2=0;
string poke;
char count;
char s;
cin>>n;
while(n--)
{
cin>>poke>>count;
switch(count)
{
case 'A':
count=1;
break;
case 'j':
count=11;
break;
case 'Q':
count=12;
break;
case 'k':
count=13;
break;
default:
break;

    }
    if(poke=="方块")
    {
        s= numberjie(&count);
        sum2+=s; 

    }
    else if(poke=="红桃") 
    {
        sum1+=count*5;
    } 
    else if(poke=="黑桃")
    {
        sum1+=count*3;
    }
    else if(poke=="梅花")
    {
        sum2+=count/10;
     } 
    


    
}

cout<<sum1<<' '<<sum2<<endl;

system("pause");
system("cls"); 
return 0;

}

运行结果及报错内容
我的解答思路和尝试过的方法

//count 有数字型也有字符型,涉及字符转化为数字型

我想要达到的结果

如方块5 之间没有空格间隔 字符可以转化为数字型

  • 写回答

4条回答 默认 最新

  • 关注

    case 'J':和 case 'K': J和K应该是大写
    count变量是字符类型不能赋值成数值和进行数值运算
    你题目的解答代码如下:

    #include <iostream>
    using namespace std;
    
    int numberjie(int k)
    {
        char sum3 = 1;
        for (int i = 1; i <= k; i++)
        {
            sum3 = sum3*i;
        }
        return sum3;
    }
    
    int main()
    {
        int n;
        int sum1 = 0, sum2 = 0;
        string str;
        string poke;
        string count;
        int s;
        cin >> n;
        while (n--)
        {
            cin >> str;
            count = str.substr(4);
            poke = str.substr(0,4);
            if (count == "A")
                s = 1;
            else if (count == "10")
                s = 10;
            else if (count == "J")
                s = 11;
            else if (count == "Q")
                s = 12;
            else if (count == "K")
                s = 13;
            else
                s = count[0]-'0';
    
            if (poke == "方块")
            {
                sum2 += numberjie(s);
            }
            else if (poke == "红桃")
            {
                sum1 += s * 5;
            }
            else if (poke == "黑桃")
            {
                sum1 += s * 3;
            }
            else if (poke == "梅花")
            {
                sum2 += s % 10;
            }
        }
    
        cout << sum1 << ' ' << sum2 << endl;
        return 0;
    }
    

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月14日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line