试图在函数中传递数组。总和返回为 0
/
void CalcAvg(int tests[], int numTests, float& avg)
{
int sum=0;
for (int i = 0; i < numTests; i++)
{
sum = sum + tests[i];
}
avg = (float)sum/numTests;
}
void CalcAvg(int tests[], int numTests, float& avg)
此函数中的总和是在本地声明的。您需要更改函数以将 main 中的总和作为参考,例如平均值。
void CalcAvg(int tests[], int numTests, float& avg, int& sum)
或者更改 CalcAvg 函数以返回总和,如下所示。
int CalcAvg(int tests[], int numTests, float& avg)
{
int sum=0;
for (int i = 0; i < numTests; i++)
{
sum = sum + tests[i];
}
avg = (float)sum/numTests;
return sum;
}
然后在你的主要集合中等于CalcAvg
int main(){
...
sum = CalcAvg (tests, 6, avg);
您需要将sum
您计算为总和的值分配给变量CalcAvg
(我更改了您的CalcAvg
函数以返回总和)
#include <iostream>
using namespace std;
//prototype (fixed to return the sum)
int CalcAvg(int tests[], int numTests, float& avg);
int main ()
{
int tests[6]; //array declaration
float avg;
int sum=0;
//input test scores
cout<<"Enter"<<6<<"test scores:"<<endl;
for (int i=0; i<6; i++)
{
cout<<"enter Test"<<i+1<<":";
cin>>tests[i];
}
//2.print first test score
cout<<tests[0]<<endl;
//3.print the last test score
cout<<tests[5]<<endl;
//4.print all test scores
for(int i=0; i<6; i++)
{
cout<<tests[i]<<endl;
}
//7. Calculate Sum & Avg using function
sum = CalcAvg (tests, 6, avg);
cout<<"Your sum is"<<sum<<" and your average is "<<avg<<endl;
return 0;
}
int CalcAvg(int tests[], int numTests, float& avg)
{
int sum=0;
for (int i = 0; i < numTests; i++)
{
sum = sum + tests[i];
}
avg = (float)sum/numTests;
return sum;
}
这看起来像是“范围”的问题
请注意,sum
in CalcAvg 与 in main 是分开的sum
。
首先我必须问你为什么使用cout<<"Enter"<<6<<"test scores:"<<endl;
insted ofcout<<"Enter 6 test scores:"<<endl;
你在一个函数中减少了总和。ic c++ 它在函数中创建变量,并在函数结束时销毁。您是否认为sum
您在主函数中声明的内容是通过 CalcAvg 函数更改的。为此,sum
如果您想更改在 main() 中声明的值,您应该在函数中重新运行一个指针。
或使用 return 语句在 CalcAvg 函数中返回总和。
请参阅此示例以了解如何使用指针更改函数的值。
main(){
int x=5;
change(&x);
cout<<x;
}
void change(int *p){
*p=10;
}