使用数组调用函数

时间:2012-12-04 19:16:18

标签: c++ arrays function

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

5 个答案:

答案 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;
  }
相关问题