好久没刷题了,准备考研,顺便想参加下团队天梯赛,发现python写久了c的函数都不会用了字符串都不会处理了。
思路:
N是从0开始的间隔N此平局这个不用计算就是 比如 2 就是 赢赢平赢赢平 就是 (+1) (+1) 清零 (+1) (+1) 清零,然后根据输入什么对应输出什么
c的字符串比较是 strcmp(a,b) 如果相等返回0 大于返回正 小于返回负
C读取文件流就是EOF ; C++ 不需要直接while(cin>>xxx)就行 你也可以判断 回车结束 if(cin.get()=='\n') break;
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
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
//c
int main()
{
int n;
char w[8];
scanf("%d",&n);
int k=0;
while(scanf("%s",&w)!=EOF){
if(strcmp(w,"End")==0){
return 0;
}
if(k==n){
k=0;
printf("%s\n",w);
continue;
}else{
if(strcmp(w,"Bu")==0){
printf("JianDao\n");
}
if(strcmp(w,"JianDao")==0){
printf("ChuiZi\n");
}
if(strcmp(w,"ChuiZi")==0){
printf("Bu\n");
}
}
k++;
}
return 0;
}
C++
//c++
int main(){
int n;
cin>>n;
string caiquan;
int k=0;
while(cin>>caiquan){
if(caiquan=="End"){
return 0;
}
if(k==n){
k=0;
cout<<caiquan<<endl;
continue;
}else{
if(caiquan=="JianDao"){
cout<<"ChuiZi"<<endl;
}
if(caiquan=="ChuiZi"){
cout<<"Bu"<<endl;
}
if(caiquan=="Bu"){
cout<<"JianDao"<<endl;
}
k++;
}
}
}