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;
}

解释:

  1. 代码首先定义了两个变量:K 表示平局间隔次数,cnt 用于记录输出次数。
  2. 使用 while 循环读取输入,直到遇到 'End'。
  3. 在循环中,根据对方的出招,判断是否需要输出平局,并输出相应的招式。
  4. 最后,每输出一次,cnt 计数器加 1。

代码优化

上面的代码可以进行一些优化,例如:

  1. 使用 switch 语句代替 if-else 语句,提高代码可读性。
  2. 使用数组存储三种招式,并使用索引来访问相应的招式,避免重复代码。
  3. 使用 % 操作符简化平局判断逻辑。

总结

本文介绍了如何编写一个C语言程序,实现石头剪刀布游戏,并设计策略确保玩家稳赢,同时控制平局次数。通过模拟游戏逻辑,并使用循环节和计数器等技巧,实现了智能的石头剪刀布游戏程序。

C语言石头剪刀布游戏:编写稳赢策略,控制平局次数

原文地址: https://www.cveoy.top/t/topic/oSwo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录