首页 > 解决方案 > C++ 函数不会正确调用 main

问题描述

现在我确信这个问题的答案很简单。我对编码很陌生,似乎无法将函数正确地调用到主函数中。这就是我试图完成的事情:该函数应该将用户输入与另一个随机生成数字的函数进行比较,重点是将随机化和用户输入保持在两个不同的函数中。这是代码。谢谢各位!

#include <random>
#include <string>
using namespace std;

std::random_device seed;
std::mt19937 mersenneTwister(seed());

int RandomInt(int min, int max);
int GuessNum(int NumGuessed);

int main() 
{
    int MagicNumber = RandomInt(1, 100);
    int GuessNum(int MagicNumber);







}
int RandomInt(int min, int max)
{
    std::uniform_int_distribution<int> distribution(min, max);
    return distribution(mersenneTwister);
}
int GuessNum(int NumGuessed)
// supposed to ask for user input in main?
{
    int guess = 0;
    cout << "Guess what number did the computer generate\n";
    cin >> guess;

    if (guess == NumGuessed)
    {
        cout << "You win\n";

    }

    else if (guess > NumGuessed)
    {
        cout << "Higher\n";

    }

    else if (guess > NumGuessed)
    {
        cout << "Lower\n";

    }

    else if (guess < 1 || guess > 100) {

        cout << "invalid input\n";

    }
    return 0;
}

标签: c++function

解决方案


  1. 要调用函数GuessNum()main()您需要编写GuessNum(MagicNumber); . 那int GuessNum(int MagicNumber);是一个宣言。

  2. 您需要包含<iostream>才能使用std::cout.

  3. 你犯了一个粗心的错误:你写else if (guess > NumGuessed)了两次。

  4. 您在分支中存在逻辑问题。用或guess测试后,你已经用尽了所有的可能性,再测试没有意义。重新排列你的分支。== <>NumGuessedif (guess < 1 || guess > 100)


推荐阅读