C语言石头剪刀布游戏:编写稳赢策略,控制平局次数
C语言石头剪刀布游戏:编写稳赢策略,控制平局次数
本文将介绍如何编写一个C语言程序,实现石头剪刀布游戏,并设计策略确保玩家稳赢,同时控制平局次数。
问题描述
编写一个稳赢不输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 来表示,即:
- '锤子'——0
- '剪刀'——1
- '布'——2
不难发现,这三个数字的循环节是 3,也就是说,如果我们想稳赢,只需要选出对方上一次出招的下一个,即可稳赢。例如,对方上一次出招是 0('锤子'),我们只需要输出 1('剪刀'),就必胜了。
如果想让程序每隔 K 次就让一个平局,我们可以用一个计数器 cnt 记录输出次数,每输出 K 次,就让一次平局,即把下一次的出招设置为'布'。
C++ 代码
#include <iostream>
#include <string>
using namespace std;
int main() {
int K, cnt = 0;
string s;
cin >> K;
while (cin >> s && s != "End") {
if (s == "ChuiZi") {
if (cnt % K == 0) {
cout << "Bu" << endl;
} else {
cout << "JianDao" << endl;
}
} else if (s == "JianDao") {
if (cnt % K == 0) {
cout << "Bu" << endl;
} else {
cout << "ChuiZi" << endl;
}
} else {
if (cnt % K == 0) {
cout << "Bu" << endl;
} else {
cout << "JianDao" << endl;
}
}
cnt++;
}
return 0;
}
解释:
- 代码首先定义了两个变量:K 表示平局间隔次数,cnt 用于记录输出次数。
- 使用
while循环读取输入,直到遇到 'End'。 - 在循环中,根据对方的出招,判断是否需要输出平局,并输出相应的招式。
- 最后,每输出一次,cnt 计数器加 1。
代码优化
上面的代码可以进行一些优化,例如:
- 使用
switch语句代替if-else语句,提高代码可读性。 - 使用数组存储三种招式,并使用索引来访问相应的招式,避免重复代码。
- 使用
%操作符简化平局判断逻辑。
总结
本文介绍了如何编写一个C语言程序,实现石头剪刀布游戏,并设计策略确保玩家稳赢,同时控制平局次数。通过模拟游戏逻辑,并使用循环节和计数器等技巧,实现了智能的石头剪刀布游戏程序。
原文地址: https://www.cveoy.top/t/topic/oSwo 著作权归作者所有。请勿转载和采集!