正整数的和,使用函数
Sum of positive integers, using functions.
我试图将这个问题分解为函数,但我的问题是,当我打印出结果时,总是得到不同的和、正和负计数。
有人能给我一个提示吗?
编写一个程序,读取十个整数,并输出其中所有正数的和。程序应忽略所有小于或等于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;
}
input()
函数需要通过引用获取其参数,以便对其进行修改。您需要在开始时将所有这些int初始化为0,否则它们包含垃圾。
您在input()函数内所做的操作将丢失,因为变量的作用域仅在函数内。
在将参数传递到input()函数时,需要使用指针或引用,以免使用本地副本。
在使用指针时,还需要取消引用。并在传递给函数之前将变量初始化为0。
因为您的程序中存在严重错误。您在函数main()
中定义了四个局部变量,并在调用函数input()
时按值发送它们。此函数不修改函数main()
中定义的变量。它只是修改它们的副本。当您的input()
功能失效时,这些副本将被删除。
为了修改它们,您应该使用参考:
void input(int &number, int &positiveCount, int &negativeCount, int &sum);
但在函数main()
中创建四个整数并在函数input()
和output()
中发送它们没有意义。您可以在input()
中创建四个局部变量,然后在此函数中打印它们。那么您不应该定义函数output()
,您可以在代码中删除它。也就是说,你应该修改你的程序。
在你的作业中写着:
编写一个程序,读取十个整数并输出其中所有的正数
因此,没有必要为这个简单的程序编写单独的函数。它看起来像
#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 numbersn"
<< "and " << i - count << " negative numbers or seroesn"
<< "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 );
相关文章:
- 添加存储在向量中的大整数的函数出现问题
- C++模板函数,用于比较任何无符号整数和有符号整数
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 整数键映射到头文件中的成员函数指针
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 反转整数的一部分(一半)的函数
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 您将如何连接"on the fly"文本+整数并将其传递给函数?
- constexpr log10 整数函数
- 如何检测除整数以外的任何内容是否传递给我的类构造函数?
- 如何使用 binary_search STL 函数在嵌套类中搜索整数?
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- C++:为什么我的掷骰子函数在掷骰子数量时只返回偶数整数?
- 从函数参数 [C++] 复制整数数组
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 模函数,避免C++整数溢出
- 通过规范化 // 函数来调整数组
- 在我的C++程序中使用函数整数参数
- 根据value_type调用适当的构造函数:整数或浮点数