文章目录
💯前言
- "石头剪子布"是一种经典游戏,它不仅规则简单,还能引发复杂的编程逻辑讨论。在本篇文章中,我们将以一道 C++ 的编程题为例,深入剖析解题的思路、优化方法,以及延伸出的编程概念。通过对比两种实现方式(我的实现和老师的实现),结合扩展性和代码优化的思路,帮助读者全面理解这一题目及其潜在的编程技巧。
C++ 参考手册
💯题目描述
石头剪子布,是一种猜拳游戏,起源于中国,然后传到日本,朝鲜等地,随着亚欧贸易的不断发展它传到西欧,到了现代化逐渐国际化的世界中。简单明了的规则,使得石头剪子布没有任何知识和规则漏洞可钻,单次玩法让比赛公平,容易且充满心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:
石头剪子布,布包石头,石头砸剪刀,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入格式:
第一行是一个整数 N,表示一共进行 N 次游戏。1 <= N <= 100。
接下来 N 行的每一行包括两个字符串,表示游戏参与者 Player1,Player2 的选择(石头、剪刀或者布):S1,S2。
字符串之间以空格隔开 S1 S2 只可能取值在 [Rock, Scissors, Paper](大小写敏感)中。
输出格式:
输出包括 N 行,每一行对应一个胜利者(Player1 或者 Player2),或者游戏出现平局,则输出 Tie。
输入输出样例:
输入 #1
3
Rock Scissors
Paper Paper
Rock Paper
输出 #1
Player1
Tie
Player2
解题分析与实现
接下来,我们将从两个实现方式出发:我的做法、老师的做法,逐步剖析解决问题的不同方式,最后对比两种实现,并延展出优化和扩展思路。
💯我的做法
以下是我的代码实现:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
string s1, s2;
for(int i = 0; i < n; i++)
{
cin >> s1 >> s2;
if(s1 == "Rock")
{
if(s2 == "Scissors")
cout << "Player1" << endl;
else if(s2 == "Paper")
cout << "Player2" << endl