使用数组调用函数

Calling A Function using Arrays

本文关键字:函数 调用 数组      更新时间:2023-10-16

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

此函数中的总和在本地声明。您需要更改函数以从主函数中获取总和作为参考,例如平均值。

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;
}

这看起来像是"范围"的问题

请注意,CalcAvg 中的sum与 main 中的sum是分开的。

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

IC C++ 它在函数中创建变量,并在函数末尾销毁。 你认为你在主函数中声明的sum是通过CalcAvg函数改变的吗? 为此,如果您想更改在 main() 中声明的值,您应该在函数中重新生成一个指向 sum 的指针。

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

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

main(){
  int x=5;      
  change(&x);
  cout<<x;
  }
void change(int *p){
   *p=10;
  }