大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi
代表“锤子”、JianDao
代表“剪刀”、Bu
代表“布”。End
代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int K, i, j = 1;
char A[][8] = { "JianDao","ChuiZi","Bu","JianDao" };//首先,将三种可能以“后克前”的方式放在一个数组中
char B[8];//存放输入的招数
scanf("%d", &K);
while (scanf("%s", B))
{
if (!strcmp(B, "End"))//strcmp函数比较输入的招数是否与End相同,如果相同,strcmp函数的返回值为0,则非0为真,结束循环
{
break;
}
for (i = 0; i <= 3; i++)
{
if (!strcmp(B, A[i]))//先找到输入的招式在数组A中的位置
{
break;
}
}
if (j <= K)//如果赢得次数没有K次,就输出与输入招式相同的下一个
{
i++;
printf("%s\n",A[i]);
j++;
}
else
{
printf("%s\n", A[i]);//否则输出当前位置的招式
j = 1;//重置j,再次开始计数
}
}
return 0;
}
PTA 提交结果如下:
如有不妥之处,欢迎各位大佬批评指正(- _ -)