石头剪刀布胜负判断的C++实现与规则解析
## 🎮 石头剪刀布胜负判断 ### 📝 问题分析 给定两个长度相等的字符串,分别代表A和B的出拳序列,需要统计A赢的次数。 **规则**: - **S**(石头)> **J**(剪刀) - **J**(剪刀)> **B**(布) - **B**(布)> **S**(石头) ### 💻 C++ 实现 ```cpp #include <iostream> #include <string> using namespace std; // 判断A是否赢B,返回true表示A赢 bool isWin(char a, char b) { return (a == 'S' && b == 'J') || (a == 'J' && b == 'B') || (a == 'B' && b == 'S'); } int main() { string a, b; // 读取两个字符串 cin >> a >> b; int wins = 0; // 遍历每个位置 for (size_t i = 0; i < a.length(); i++) { if (isWin(a[i], b[i])) { wins++; } } cout << wins << endl; return 0; } ``` ### 🔍 关键点解析 | 函数/部分 | 说明 | |-----------|------| | `isWin(a, b)` | 根据胜负关系返回A是否胜利 | | `a.length()` | 获取字符串长度,保证两字符串等长 | ### ⚙️ 编译运行 ```bash g++ -std=c++11 rock_paper_scissors.cpp -o rps ./rps ``` ### 📌 输入输出验证 **输入样例**: ``` SJSS BJSB ``` **程序推理过程**: 1. 位置0:A出S,B出B → B赢 2. 位置1:A出J,B出J → 平局 3. 位置2:A出S,B出S → 平局 4. 位置3:A出S,B出B → B赢 **输出**:`0` ✅ ### 🧠 扩展建议 - **健壮性**:若输入字符串长度不同,应增加长度检查,避免越界访问。 - **性能**:O(n) 线性时间复杂度,无需额外优化。 - **代码规范**:可改用 `size_t` 避免符号比较,或使用 C++11 的 `auto` 提升可读性。 - **单元测试**:建议添加测试用例覆盖所有胜负组合(如 `SJ`, `JB`, `BS`, 以及平局 `SS`, `JJ`, `BB`)。 ### 📚 学习资源 - **C++ 官方文档**:[cppreference.com](https://en.cppreference.com/w/) - **在线调试工具**:[OnlineGDB](https://www.onlinegdb.com/online_c++_compiler) --- ######[AI写代码神器 | 664点数解答 | 2026-07-31 19:25:02]
- 生活大爆炸升级版猜拳游戏:代码实现、解释与复杂度分析(字节豆包 | 656点数解答 | 2025-11-26 18:54:37)102
- Java 继承实现:重温经典剪刀石头布游戏(字节豆包 | 451点数解答 | 2024-10-20 19:57:58)532
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)543
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)384
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)408
- 用 JS 实现网页猜数字游戏:1 - 100 随机数等你挑战!(百度文心 | 653点数解答 | 2025-03-26 14:39:33)301
- JS实现猜数字游戏:弹窗输入,1 - 100随机挑战,教你轻松上手!(百度文心 | 646点数解答 | 2025-03-26 14:49:43)264
- 融合道德感机制:女性NPC规则全面升级(字节豆包 | 1489点数解答 | 2025-06-20 20:06:34)227
- C++ 解决老师奖励同学铅笔数量问题:最少奖励方案揭秘(字节豆包 | 724点数解答 | 2025-12-06 20:58:32)112
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)461
- JS 代码:判断“red”改值为“green”并弹窗显示结果( | 176点数解答 | 2024-05-20 21:33:04)485
- 用 JS 代码巧妙判断 a 与 b 关系:输出对应结果 ( | 47点数解答 | 2024-05-20 22:10:14)396