-3

这是一个愚蠢的问题,但老实说,我无法让它在我的程序中工作。我刚开始使用 C++,但我一直在做错事。我让用户输入'pile'的值,然后我想转到我的第二个函数并将pile除以2。我的教授说我不允许使用全局变量。这是我的代码:

int playerTurn();
int main() //first function
{
    int pile = 0;
    while ( pile < 10 || pile > 100 ) {
        cout << "How many marbles would you like there to be?" << endl;
        cout << "Please choose between 10 and 100: ";
        cin >> pile;
    }
    return pile; //the variable I'm trying to return is pile
    playerTurn();
}

int playerTurn(pile) //second function
{
    int limit = pile / 2; //says pile is an undeclared identifier
}

我似乎无法将“堆”转移到我的其他功能 playerTurn

4

4 回答 4

1

return语句退出一个函数并返回一个值到它被调用的地方。

因此,您的代码所做的就是退出main()并将堆放回操作系统。

你需要调用 playerTurn,使用 pile 作为参数。

于 2013-02-22T19:38:40.653 回答
1

return语句立即从当前函数返回。因此,当您在main函数中使用它时,它会从函数中返回main

要将变量传递给另一个函数,请将其作为参数传递:

playerTurn(pile);

此外,当你声明一个带参数的函数时,你必须完全指定参数,就像你做其他变量一样:

void playerTurn(int pile)
{
    // ... your implementation here...
}

如果您无法理解传递参数或返回值,那么您应该继续阅读基础知识,直到您理解为止。

于 2013-02-22T19:38:55.480 回答
0

检查评论以获取描述

int playerTurn(); // Function declaration

int main() //first function
{
    int pile; // Define variable before usage
    do  // Google do-while loops.
    {        
        cout << "How many marbles would you like there to be?" << endl;
        cout << "Please choose between 10 and 100: ";
        cin >> pile;
    }while ( pile < 10 || pile > 100 );

    // Calling the secondary function and passing it a parameter 
    // and then getting the result and storing it in pile again.
    pile = playerTurn(pile) 
}

// Not really sure what you are trying to do here but 
// assuming that you want to pass pile to this function 
// and then get the return type in main

int playerTurn(int pile) 
{
    int limit = pile / 2; //Processing.
    return limit;         // Return from inside the function, this value goes to pile in main()
}
于 2013-02-22T19:44:04.823 回答
0
  • 您的前向定义与playerTurn实现不匹配。您需要将其更改为int playerTurn(int pile).

  • 您的实现playerTurn没有指定参数类型(即int)。

  • 据我所知,您正试图pilemain. 这实际上将退出您的程序。相反,您似乎想将其作为参数传递。为此,只需将其放在括号内(当然,去掉该return xyz;行)。

于 2013-02-22T19:40:34.390 回答