【发布时间】:2021-08-07 07:34:54
【问题描述】:
我尝试编写一个简单的代码来计算数组元素的总和。每件事看起来都很正常,但是函数错误地返回了总和值(它总是将它乘以 2)。虽然如果我只想打印值,它工作正常。 这是代码:
#include <iostream>
using namespace std;
void getElements(int[],int);
int sumOfElements(int[],int);
int number;
int sum=0;
int main()
{
int a[10];
getElements(a,5);
sumOfElements(a,5);
cout<<"The sum is "<<sumOfElements(a,5)<<endl;
return 0;
}
//Getting array's elements
void getElements(int numbers[],int size_)
{
for (int i=0; i<size_; i++)
{
cout<<"numbers["<<i<<"]: ";
cin>>number;
numbers[i]=number;
}
cout<<'\n';
}
//Calculation the sum of array's elements
int sumOfElements(int numbers[],int size_)
{
for(int i=0;i<size_;i++)
{
sum+=numbers[i];
}
cout<<sum<<endl;
return sum;
}
有什么想法吗?提前谢谢你!
【问题讨论】:
-
调用
sumOfElements修改了全局变量sum...你调用sumOfElements两次。所以......是的......你会得到双倍的。可能应该将sum声明为本地到sumOfElements。 -
现在我明白了!谢谢。
-
正如所暗示的,最好只在需要变量的地方确定变量的范围。您应该将
int number移动到getElements和int sum到sumOfElements。然后在main中,可以捕获sumOfElements的返回值并打印出来,也可以照样直接打印出来。更改后,您可以根据需要调用sumOfElements10 次,它总是会“自动”返回相同、正确的总和。此外,在不捕获其返回值的情况下调用它本质上是无用的。