关于#C语言#的问题,如何解决?

L1-044 稳赢
分数 15
作者 陈越
单位 浙江大学
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。

输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

为什么我的代码显示有错误,请帮我指出哪里有问题

img

我的代码:

#include 
#include 
int main()
{
    int k,i,m,n=0;
    char a[50][10],b[10]="End";
    
    scanf("%d",&k);
    getchar();
    for(i=0;;i++)
    {
        gets(a[i]);
        if(strcmp(a[i],b)==0)
         break;
    }
    
    m=i;
    
    int flag=1;
    for(i=0;iif(n==k)
        {
            printf("%s\n",a[i]);
            n=-1;
            flag=0;
        }
        n++;
        
        if(flag==1)
        {

                  if(strcmp(a[i],"ChuiZi")==0)
                   printf("Bu\n");
              
                  if(strcmp(a[i],"JianDao")==0)
                     printf("ChuiZi\n");
             
                  if(strcmp(a[i],"Bu")==0)
                    printf("JianDao\n");
        }
        
        flag=1;
        
    }
    
    return 0;
}



参考一下,不喜勿喷

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

int main() {
int k, i, m, n = 0;
char a[50][10], b[10] = "End";

c
Copy code
scanf("%d", &k);
getchar();

for (i = 0; i < 50; i++) {
    fgets(a[i], 10, stdin);
    a[i][strlen(a[i]) - 1] = '\0';  // 去掉换行符
    if (strcmp(a[i], b) == 0)
        break;
}

m = i;

int flag = 1;
for (i = 0; i < m; i++) {
    if (n == k) {
        printf("%s\n", a[i]);
        n = -1;
        flag = 0;
    }
    n++;

    if (flag == 1) {
        if (strcmp(a[i], "ChuiZi") == 0)
            printf("Bu\n");
        else if (strcmp(a[i], "JianDao") == 0)
            printf("ChuiZi\n");
        else if (strcmp(a[i], "Bu") == 0)
            printf("JianDao\n");
    }

    flag = 1;
}

return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^