正整数之和,使用函数。

时间:2014-10-11 14:18:00

标签: c++ function

我正试图将这个问题转化为功能,但我的问题是,当我打印出结果时,我总是得到不同的总和,正数和负数。

有人可以给我一个提示吗?

编写一个读取十个整数的程序,并输出其中所有正数的总和。程序应忽略所有小于或等于0的数字。程序还应显示正数的计数和负数的计数或零。

#include <iostream>

using namespace std;
void input(int number, int positiveCount, int negativeCount, int sum);
void output(int positiveCount, int negativeCount, int sum);

int main()
{
int number, positiveCount, negativeCount, sum;
input(number, positiveCount, negativeCount, sum);
output(positiveCount, negativeCount, sum);


return 0;
}
void input(int number, int positiveCount, int negativeCount, int sum)
{
cout << "Enter 10 integers: " << endl;
for (int i = 0; i < 10; i++)
{

    cin >> number;
    if (number > 0)
    {
        positiveCount++;
        sum = sum + number;
    }
    else
    {
        negativeCount++;
    }
 }


}
void output(int positiveCount, int negativeCount, int sum)
{
     cout << sum << endl;
     cout << positiveCount << endl;
     cout << negativeCount << endl;

}

4 个答案:

答案 0 :(得分:2)

您的input()函数需要通过引用获取其参数,以便它可以修改它们。并且您需要在开始时将所有这些int初始化为0或者它们包含垃圾。

答案 1 :(得分:1)

你在input()函数内完成的操作会丢失,因为变量的范围只在函数内部。

在将参数传递给input()函数时,您需要使用指针或引用,以便不使用本地副本。

使用指针时,您还需要进行解除引用。 并在传递给函数之前将变量初始化为0。

答案 2 :(得分:0)

因为您的计划存在严重错误。您可以在函数main()中定义四个局部变量,并在调用函数input()时按值发送它们。此函数不要修改函数main()中定义的变量。它只是修改他们的副本。当您退出功能input()时,系统会删除这些副本。

要修改它们,您应该使用参考:

void input(int &number, int &positiveCount, int &negativeCount, int &sum);

但是在函数main()中创建四个整数并将它们发送到函数input()output()中没有任何意义。您可以在input()中创建四个局部变量,然后在此函数中打印它们。那么你不应该定义函数output(),你可以在代码中删除它。即你应该修改你的程序。

答案 3 :(得分:0)

在你的作业中写有:

  

编写一个读取十个整数并输出总和的程序   其中所有正数

因此不需要为这个简单的程序编写单独的函数。它看起来像

#include <iostream>

int main() 
{
    const size_t N = 10;

    std::cout << "Enter " << N << " integers: ";

    size_t i = 0, count = 0;
    long long sum = 0;

    int num;

    for ( ; i < N && std::cin >> num; i++ )
    {
        if ( num > 0 )
        {
            sum += num;
            ++count;
        }
    }

    std::cout << "You have entered " << count << " positive numbers\n"
              << "and " << i - count << " negative numbers or seroes\n"
              << "Sum of positive numbers is " << sum << std::endl;

    return 0;
}

如果你想编写单独的函数,那么例如函数输入可以声明为

long long input( size_t &positive_count, size_t &negative_count );

long long input( size_t &total_count, size_t &positive_count );

long long input( size_t *positive_count, size_t *negative_count );

long long input( size_t *total_count, size_t *positive_count );
相关问题