当前位置: 首页 > 知识库问答 >
问题:

值返回函数

凌长恨
2023-03-14

我一直在做这个岩石剪刀剪刀程序一段时间,它没有显示的方式,它应该是应该的。我在代码中使用了值返回函数。问题在程序的末尾显现出来。游戏的结果将被替换,但实际显示的是另一个提示,供用户输入他们的选择。下面是我的代码:


#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int random();
string input();
string compChoice();
void displayCompChoice(string);
bool compare(string, string);

int main() {
 cout << "\nThis program lets you play the popular Rock-Paper-Scissors Game with your computer! \n\n";
 random(); // computer starts choosing a number from 1 to 3
 cout << "----- ----- ----- ----- -----\n";
 cout << "\nTo play, use your keyboard to enter your choice.\n";
 cout << "Please enter [ rock or paper or scissors ] \n\n";
 cout << "----- ----- ----- ----- -----\n\n";
 
 input(); // function for input of user's choice
 cout << "Computer's choice: ";
 displayCompChoice(compChoice()); // function for the display of the computer's choice
 compare(input(), compChoice());
}

int random() {
    srand(time(NULL));
        int num;
        num = rand() % 3 + 1; //generate random number from 1-3 
}
string input () { 
    string userChoice;
        cout << "Enter your choice: ";
        cin >> userChoice;
    return userChoice; 
    userChoice = input();
}

string compChoice () {
        
        if (random() == 1) 
            return "rock";
        else if (random() == 2)
            return "paper";
        else if (random() == 3) 
            return "scissors"; 
        
}

void displayCompChoice (string) {
    cout << compChoice();
    cout << "\n\n";
    cout << "----- ----- ----- ----- -----\n\n";
}

bool compare (string, string) { 
    if ("rock", "scissors") {
        return true;
        cout << "You win! \nRock smashes scissors.";
    }
    else if ("scissors", "rock") {
        return true; 
        cout << "Computer wins! \nRock smashes scissors.";
    }
    else if ("scissors", "paper") {
        return true;
        cout << "You win! \nScissors cuts paper.";
    }
    else if ("paper", "scissors") {
        return true;
        cout << "Computer wins! \nScissors cuts paper";
   }
    else if ("paper", "rock") {
        return true;
        cout << "You win! \nPaper wraps rock.";
    }
    else if ("rock", "paper") {
        return true;
        cout << "Computer wins! \nPaper wraps rock.";
    }
    else {
        return false;
        cout << "It's a tie! \nPlease try again. \n\n----- ----- ----- ----- -----";
    }
}

共有1个答案

晏经武
2023-03-14

您正在两次调用input(),因此提示将出现两次。

相反,你应该

  1. 调用输入()一次
  2. 将返回的值存储到变量
  3. 使用该变量以备以后使用

可以这样做:

int main() {
 cout << "\nThis program lets you play the popular Rock-Paper-Scissors Game with your computer! \n\n";
 random(); // computer starts choosing a number from 1 to 3
 cout << "----- ----- ----- ----- -----\n";
 cout << "\nTo play, use your keyboard to enter your choice.\n";
 cout << "Please enter [ rock or paper or scissors ] \n\n";
 cout << "----- ----- ----- ----- -----\n\n";
 
 string user_hand = input(); // function for input of user's choice
 string computer_hand = compChoice();
 cout << "Computer's choice: ";
 displayCompChoice(computer_hand); // function for the display of the computer's choice
 compare(user_hand, computer_hand);
}

还要注意

  • return语句使其在该点处停止函数的执行,因此compare函数中的cout语句不会被执行。
  • compare语句中使用了
  • 逗号运算符。它的求值结果将是右操作数的结果。您应该:
    • 为参数命名。
    • 将字符串与参数进行比较。相等比较运算符==和逻辑与运算符&将很有用。

 类似资料:
  • Lua 具有一项与众不同的特性,允许函数返回多个值。Lua 的库函数中,有一些就是返回多个值。 示例代码:使用库函数 string.find,在源字符串中查找目标字符串,若查找成功,则返回目标字符串在源字符串中的起始位置和结束位置的下标。 local s, e = string.find("hello world", "llo") print(s, e) -->output 3 5 返回多个值

  • 通过上面的学习,可以知道通过 return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。 不带参数值的 return 语句返回 None。 具体示例: # -*- coding: UTF-8 -*- def sum(num1,num2): # 两数之和 if not (isinstance (num1,(int ,float)) and isinstance (

  • 在rust中,任何函数都有返回类型,当函数返回时,会返回一个该类型的值。我们先来看看main函数: fn main() { //statements } 之前有说过,函数的返回值类型是在参数列表后,加上箭头和类型来指定的。不过,一般我们看到的main函数的定义并没有这么做。这是因为main函数的返回值是(),在rust中,当一个函数返回()时,可以省略。main函数的完整形式如下:

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • 问题内容: 我不想检查我的网址statusCode是否等于200,如果statusCode等于200,我创建了一个返回布尔值的函数,我使用的是dataTask,但我不知道如何返回值: 中的返回返回错误: void函数中非预期的非无效返回值 问题答案: 为了返回值,您应该使用块。尝试像这样声明您的功能: 然后这样称呼它: 希望这会有所帮助。

  • 我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):