供参考:
#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);
}
}
运行结果如下:
可以循环进行游戏,每隔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;
}