尝试在函数中传递数组。总和返回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;
}
答案 0 :(得分:4)
void CalcAvg(int tests[], int numTests, float& avg)
此函数的总和在本地声明。您需要更改函数以从主函数中获取总和作为参考,如平均值。
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);
答案 1 :(得分:2)
您需要将sum
变量的值计算为CalcAvg
中的总和(我更改了您的CalcAvg
func以返回总和)
#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;
}
答案 2 :(得分:2)
这看起来像是“范围”的问题
请注意,CalcAvg中的sum
与main中的sum
分开。
答案 3 :(得分:0)
首先,我必须问你为什么要使用cout<<"Enter"<<6<<"test scores:"<<endl;
{/ 1}} cout<<"Enter 6 test scores:"<<endl;
你在一个函数中得到了总和。 ic c ++它在函数中创建变量,并在函数结束时被破坏。你认为你在main函数中声明的sum
是通过CalcAvg函数改变的吗?要执行此操作,如果您想要更改在main()中声明的值,则应该在函数中重新生成指向sum
的指针。
或使用返回语句在CalcAvg函数中返回总和。
答案 4 :(得分:0)
请参阅此示例以了解如何使用指针更改函数中的值。
main(){
int x=5;
change(&x);
cout<<x;
}
void change(int *p){
*p=10;
}