我正试图将这个问题转化为功能,但我的问题是,当我打印出结果时,我总是得到不同的总和,正数和负数。
有人可以给我一个提示吗?
编写一个读取十个整数的程序,并输出其中所有正数的总和。程序应忽略所有小于或等于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;
}
答案 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 );