c语言pat基础题改错080902L1044

img

img


我的代码出现问题,本题希望可以得到大家的指导,谢谢你的帮助!

供参考:

#include <stdio.h>
#include <string.h>
char* s[3] = { "ChuiZi","JianDao","Bu" };
char* uns[3] = { "Bu","ChuiZi","JianDao" };
int main()
{
    int k, i, cnt = 0;
    char str[10] = { 0 };
    scanf("%d", &k);
    while (scanf("%s", str) == 1) {
        if (!strcmp(str, "END")) break;
        cnt++;
        for (i = 0; i < 3; i++) {
            if (strcmp(str, s[i]) == 0) {
                if (cnt == k + 1) {
                    printf("%s\n", str);
                    cnt = 0;
                }
                else
                    printf("%s\n", uns[i]);
            }
        }
    }
    return 0;
}

【以下回答由 GPT 生成】

很抱歉,由于问题中没有提供相关代码和错误信息,我无法给出具体的解决方案。如果你能提供更多的细节和代码,我将尽力帮助你找到问题并提供解决方案。



【相关推荐】



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

可参考如下代码:


#define W_CHUIZI "Chuizi"
#define W_JIANDAO "JianDao"
#define W_BU "Bu"
#define W_END "End"

typedef struct  won {
    char  *input;
    char *output;
}won_t;

won_t won[]={
    {W_CHUIZI,  W_BU},
    {W_BU,  W_JIANDAO},
    {W_JIANDAO,  W_CHUIZI},
};

void  win(char  *input, int f)
{
    int tabcnt  =  sizeof(won)/sizeof(won[0]);
    int i;

    for(i=0;i<tabcnt;i++) {
        if(!strcmp(won[i].input, input)) {
            if(f) {
                printf("%s\n",  input);
            }
            else {
                printf("%s\n",  won[i].output);
            }
        }
        else if(!strcmp(input, W_END)) {
            printf("Quit, Bye!\n");
            exit(0);
        }
    }
}
    
void main()
{

    printf("please input K:\n");
    int k;
    scanf("%d", &k);
    printf("K=%d\n", k);    

    int times  =  0;
    while(1) {
        printf("please input:\n");
        char input[64]="";
        scanf("%s", input);
        int  f =0;
        times++;
        if(times==k) {
            f=1;
            times=0;
        }
        win(input, f);
        
    }

}

运行结果如下:

img

可以循环进行游戏,每隔K局输出一个平局,然后其他局则输出当前招对应的赢招,当输入"End"结束游戏即可。

代码如下:


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

int main(void){
    
    char action[3][10]={"ChuiZi","JianDao","Bu"}; // 存储3个招 
    char winAction[3][10] = {"Bu","ChuiZi","JianDao"}; // 存储上面3个招对应的赢招 
    char nowAction[10];  // 存储输入的每个招 
    int K,i=0;
    
    scanf("%d", &K);  // 获取K 
    scanf("%s",nowAction);  // 获取当前招 
//    printf("K=%d\n",K);
    
    // 如果当前招输入的不是"End",则循环进行游戏 
    while(strcmp(nowAction,"End")!=0){
        
    //    printf("nowAction=%s,i=%d\n",nowAction,i);
        if((i+1)%(K+1)==0){      // 每隔K局,输出一个平局            
            printf("%s\n",nowAction);    
            scanf("%s",nowAction);  // 获取下一招 
            i++;    
            continue;        
        }
        
        for(int j=0;j<3;j++){  // 输出当前招对应的赢招 
            
            if(strcmp(nowAction,action[j])==0){
                printf("%s\n",winAction[j]);
                break;
            }        
        } 
        
        
        scanf("%s",nowAction);  // 获取下一个招 
        i++;
        
    }
    
    
    return 0;
    
    
} 

img