题目
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi
代表“锤子”、JianDao
代表“剪刀”、Bu
代表“布”。End
代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
思路
1.输入时,用while循环,只要不碰到End就继续,于是while(scanf("%s",a)!=EOF&&strcmp("%s",a)!=0)
注意在看字符串是否一样时要用strcmp函数,不要用scanf("%s",a)!="End"!!!!!
2.重点在判断字符串的序号与k的关系,有两种处理方法:
一:令count初始化为1,无论序号是不是与k有关,每次循环输出后都+1,然后判断的条件是count%(k+1)是否为0;
二:判断序号和k的关系,初始count为0,只有当赢的时候+1,否则在平局时不+1,一旦count到达k,此时平局,输出后再初始count=0,继续循环;
代码
#include<stdio.h>
#include<string.h>
int main(){
int k,count=1;
scanf("%d",&k);
char a[10];
while(scanf("%s",a)!=EOF&&strcmp(a,"End")!=0){
if(count%(k+1)!=0){
if(strcmp("ChuiZi",a)==0)
printf("Bu\n");
else if(strcmp("JianDao",a)==0)
printf("ChuiZi\n");
else if(strcmp("Bu",a)==0)
printf("JianDao\n");
//count++;
}
else{
puts(a);
count=0;
}
count++;
}
return 0;
}