C语言石头剪刀布游戏:稳赢不输,但每隔K次平局
C语言石头剪刀布游戏:稳赢不输,但每隔K次平局
游戏规则:
编写一个C语言程序,模拟石头剪刀布游戏,根据对方的出招,给出对应的赢招。为了让游戏更有趣,程序会每隔K次出招后,自动出一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:'ChuiZi'代表“锤子”、'JianDao'代表“剪刀”、'Bu'代表“布”。'End'代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
思路:
可以用哈希表将三种招式分别映射到0、1、2。接下来,每输入一种招式,就将计数器加1。如果计数器对K取余为0,就输出“平局”招式;否则,输出能赢对方的招式,即对方招式加1对3取余。
C++ 代码
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
int K;
cin >> K;
map<string, int> hashmap = {{'ChuiZi', 0}, {'JianDao', 1}, {'Bu', 2}};
int count = 0;
string input;
while (cin >> input && input != 'End') {
if (count % K == 0) {
cout << input << endl; // 平局
} else {
int index = hashmap[input];
int nextIndex = (index + 1) % 3;
for (auto it : hashmap) {
if (it.second == nextIndex) {
cout << it.first << endl;
break;
}
}
}
count++;
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/oSwq 著作权归作者所有。请勿转载和采集!