Chen·一梦 2021-01-14 18:41 采纳率: 0%
浏览 632

PTA手指游戏C/C++

 

7-6 手指游戏

有时候,小诺诺会和爸爸玩手指游戏。游戏规则是:拇指 胜 食指, 食指 胜 中指,中指 胜 无名指,无名指 胜 小指,小指 胜 拇指;反之,食指 败给 拇指,中指 败给 食指,……;其它情况不分胜负,如拇指与中指不分胜负。拇指、食指、中指、无名指、小指分别用英文表示为:“thumb”、“forefinger”、“middle finger”、“third finger”、“little finger”。请你根据两人所出的手指判断小诺诺是否获胜。

输入格式:

首先输入测试组数T (0<T<20),然后输入T组测试数据;每组测试先输入2个字符串a,b(a,b值为描述中的手指的英文表示,以英文逗号“,”分隔),a为小诺诺出的手指,b为她爸爸出的手指。

输出格式:

对于每组测试,在一行上输出“Win”或“Lose”或“Draw”表示小诺诺胜或败或和(不分胜负)。

输入样例:

3
little finger,middle finger
thumb,forefinger
third finger,middle finger

下面代码显示段错误,为什么呀?????

#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    char w;
    scanf("%c",&w);
    char Arr[n][10];
    int i = 0;
    char str1[n][20], str2[n][20];
    for (i = 0; i < n; i++)
    {
        char ch;
        int count1 = 0, count2 = 0;
        while (1)
        {
            scanf("%c", &ch);
            if (ch == ',')
            {
                str1[i][count1] = '\0';
                break;
            }
            str1[i][count1++] = ch;
        }
        while (1)
        {
            scanf("%c", &ch);
            if (ch == '\n')
            {
                str2[i][count2] = '\0';
                break;
            }
            str2[i][count2++] = ch;
        }
    }
    for (i = 0; i < n; i++)
    {
        if (
            (strcmp(str1[i], "thumb") == 0 && strcmp(str2[i], "forefinger") == 0)
            || (strcmp(str1[i], "forefinger") == 0 && strcmp(str2[i], "middle finger") == 0)
            || (strcmp(str1[i], "middle finger") == 0 && strcmp(str2[i], "third finger") == 0)
            || (strcmp(str1[i], "third finger") == 0 && strcmp(str2[i], "little finger") == 0)
            || (strcmp(str1[i], "little finger") == 0 && strcmp(str2[i], "thumb") == 0)
            )
            strcpy(Arr[i], "Win");
        else if (
            (strcmp(str1[i], "thumb") == 0 && strcmp(str2[i], "little finger") == 0)
            || (strcmp(str1[i], "forefinger") == 0 && strcmp(str2[i], "thumb") == 0)
            || (strcmp(str1[i], "middle finger") == 0 && strcmp(str2[i], "forefinger") == 0)
            || (strcmp(str1[i], "third finger") == 0 && strcmp(str2[i], "middle finger") == 0)
            || (strcmp(str1[i], "little finger") == 0 && strcmp(str2[i], "third finger") == 0)
            )
            strcpy(Arr[i], "Lose");
        else strcpy(Arr[i], "Draw");
        puts(Arr[i]);
    }
}

  • 写回答

2条回答 默认 最新

  • Chen·一梦 2021-01-14 18:44
    关注

    输出样例:

    Draw
    Win
    Lose
    评论

报告相同问题?

悬赏问题

  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
  • ¥50 苹果MGIE项目部署缺少emb权重
  • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
  • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
  • ¥15 已知X和Y有以下关系,求X和Y的关系式
  • ¥15 net core 同时编辑怎么防止数据多保存了
  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题
  • ¥15 QWebEngineView