【问题标题】:How do I pass a user input as an argument into a function prototype?如何将用户输入作为参数传递给函数原型?
【发布时间】:2015-02-08 04:44:27
【问题描述】:
#include <iostream>
#include <cmath>

using namespace std;

int nCount = 0, nX = 0;
double sum_total, nAverage;
// Function Prototypes

int Sum(int number);                        // Returns the sum of two ints
int Max(int i, int j);                          // Returns max of two ints
int Min(int i, int j);                          // Returns min of two ints
double Average(int nCount, int sum_total);  // Returns the avg - (sum_total/count)

int main(){
    cout << "How many numbers would you like to enter?" << endl;
    cin >> nCount;
    cout << "You would like to enter " << nCount << " numbers\n";

    while (nX < nCount)
    {
        int a;
        cout << "Please enter you numbers: "; // Pass this value into functions
        cin >> a;
        // Call Sum, Max, Min, and Average passing these two arguments
        int Sum(a);
        nX++;
    }
    cout << "The total is: " << sum_total << endl;
    system("PAUSE");
    return 0;
}

int Sum(int number)
{
    sum_total = number + number;
    return sum_total;
}

这是我正在开发的程序。我想做的是让用户使用 cin 输入任意数量的整数,然后将该值传递给函数 int Sum 以将所有数字相加,然后显示它们的总和。 while 循环允许用户输入他们想要多少个数字,然后将该参数传递给下一个函数。然而,这个程序将返回 0 作为总和。显示0的原因是什么?为了使这个程序正常工作,我需要做什么?

编辑

int Max(int number)
{
    if (number > currentMax)
        currentMax = number;
    return currentMax;
}

//

int Min(int number)
{
    if (currentMin < number)
        currentMin = number;
    return currentMin;
}

【问题讨论】:

    标签: c++ function parameters arguments prototype


    【解决方案1】:

    您的函数调用无效。你应该这样称呼它:

    Sum(a);
    

    另外,因为 sum_total 是一个全局变量,所以不需要从 Sum 中返回值。

    编辑

    这里也是适当的 Sum() 定义:

    void Sum(int number)
    {
        sum_total += number;
    }
    

    注意:不要忘记将 sum_total 初始化为 0。

    【讨论】:

    • 好的,我明白了。所以我继续对函数调用进行更改,并输入使用 2 个数字。我选择了 2,然后想将 1 和 2 相加,程序在应该返回 3 时返回 4 作为总和...
    • Sum() 应该将数字添加到总和中,而不是将数字 x2 添加到总和中。见编辑。
    • 是的!我自己刚刚做了这个,它奏效了。我不敢相信我没有看到那个错误。非常感谢。
    • 现在,如果我想创建另一个函数来对输入的数字列表进行排序并找到最大值和最小值,我知道我需要做一些事情,例如 CurrentMaximum = Max(CurrentMaximum, NumberJustInputed ); CurrentMinimum = Min(CurrentMinimum, NumberJustInputed);当前最大值和最小值自动设置为输入的第一个数字,然后针对输入的下一个值进行测试。我应该创建一个名为 currentmax 和 currentmin 的变量并将它们分配给 0 吗?
    • 再次感谢您的帮助。我为 max 和 min 创建了两个函数,max 有效,但 min 不起作用。我设置了一个 if 语句,如果输入的数字大于当前最大值,则当前最大值 = 输入的数字。至于 min,我有相同的设置,但切换了比较,但返回 0。你能告诉我为什么吗?
    猜你喜欢
    • 2021-12-24
    • 2020-12-23
    • 2016-03-12
    • 2021-07-16
    • 2020-01-30
    • 2021-04-28
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多