-1

试图在函数中传递数组。总和返回为 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;
}
4

5 回答 5

4
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);
于 2012-12-04T19:28:17.310 回答
2

您需要将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;
}
于 2012-12-04T19:27:09.603 回答
2

这看起来像是“范围”的问题

请注意,sumin CalcAvg 与 in main 是分开的sum

于 2012-12-04T19:29:48.430 回答
0

首先我必须问你为什么使用cout<<"Enter"<<6<<"test scores:"<<endl;insted ofcout<<"Enter 6 test scores:"<<endl;

你在一个函数中减少了总和。ic c++ 它在函数中创建变量,并在函数结束时销毁。您是否认为sum您在主函数中声明的内容是通过 CalcAvg 函数更改的。为此,sum如果您想更改在 main() 中声明的值,您应该在函数中重新运行一个指针。

或使用 return 语句在 CalcAvg 函数中返回总和。

于 2012-12-04T19:32:32.657 回答
0

请参阅此示例以了解如何使用指针更改函数的值。

main(){
  int x=5;      
  change(&x);
  cout<<x;
  }

void change(int *p){
   *p=10;
  }
于 2012-12-04T19:43:13.650 回答