天梯赛L1-044 稳赢

一、问题描述

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:

输入首先在第一行给出正整数K(10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。

输出格式:

对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例:

2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
 

输出样例:

Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

二、设计思路

1、从键盘接收一个k,即平局间隔的次数;

2、用while(1)死循环来接收字符串,代表对方的每一次出招,如果是“End”就break结束,如果不是则对应进行判断;

3、定义一个变量count来记录赢得次数,以达到每进行k局就平局的要求,初始值为0;

4、当count!=k时,如果对方出“石头”,就输出“布”,如果对方出“布”,就输出“剪刀”,如果对方出“剪刀”,就输出“石头”,当count==k时,对方出啥我就输出啥,并在输出完后将count置为0;

三、程序流程图

 

四、伪代码

五、代码

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int k;
 6     cin >> k;
 7     int i = 0;
 8     getchar();
 9     int count = 0;
10     while (1)
11     {
12         string s;
13         cin >> s;
14         if (s == "End")
15         {
16             break;
17         }
18             if (count == k)
19             {
20                 cout << s << endl;
21                 count = 0;
22             }
23             else
24             {
25                 count++;
26                      if (s == "ChuiZi")
27             {
28                 cout << "Bu" << endl;
29             }
30             else if (s == "Bu")
31             {
32                 cout << "JianDao" << endl;
33             }
34             else if (s == "JianDao")
35             {
36                 cout << "ChuiZi" << endl;
37             }
38             }
39       }
40         return 0;
41     }

 

六、总结

1、while(1)是一个死循环,可以从键盘接收无限次数据,直到出现不满足要求的数据;

2、类似于间隔n次就出现一次特殊情况的问题,可以定义一个变量作为计数器,初始值为0,当计数器等于n时特殊处理,过后再将计数器置为0;

posted @ 2023-05-15 14:53  连师傅只会helloword  阅读(36)  评论(0编辑  收藏  举报