繁体   English   中英

C中二维数组中一行的平均值?

[英]Average of a row in a two-dimensional array in C?

我在制作一个使用函数调用来查找二维数组中行的平均值的程序时遇到麻烦吗? 我无法在更大的程序中使用它。 我制作了这个程序,试图找出我做错了什么,但无济于事。 任何外部帮助将不胜感激! 这是测试代码:

#include <stdio.h>
double dAvg(double pt[][5],int rows);
int main(void){
    int i;
    //Initiallize array
    double array[3][5]={{3.0,5.0,2.0,1.0,0.0},{4.0,8.0,6.0,3.0,3.0},{7.0,6.0,2.0,3.0,5.0}};
    //Computes the average value per row of array
    for(i=0;i < 3;i++){
        printf("The average of row %d is %f",i,dAvg(array,3));
    }
    return 0;
}
double dAvg(double pt[][5],int rows){
    int r,c;
    double sum,avg;
    //Calculate sum first
    for (c=0,sum=0;c<5;c++){
        sum += pt[r][c];
    //Find average by dividing the sum by the number of numbers in a row
    avg=sum/5;
    return avg;
    }
}

当我运行该程序时,它只是说该程序已停止工作,最重要的是,我不确信一旦解决了第一个问题,我便会真正工作。 我是多维数组的新手,尤其是对于将它们传递给函数而言。 再次感谢任何帮助!

dAvg函数中存在大多数错误:

即:

  1. 如果只需要一行,则不应传递整个2D数组
  2. 您应该传递数组的长度,而不是在各处进行硬编码(好的做法,不是错误)
  3. 您的r保持未初始化状态,因此索引无法正常工作
  4. 因此,您在每次迭代中都返回平均值,而不是求和而不是首先添加的值相加,然后在添加其他值之前返回。
double dAvg(double array[], size_t length){
    size_t c;
    double sum = 0;

    // Calculate sum first
    for (c = 0; c < length; c++){
        sum += array[c];
    }

    // Find average by dividing the sum by the number of numbers in a row
    return sum / (double) length;
} 

int main(void){
    int i;
    //Initiallize array
    double array[3][5] = {{3.0,5.0,2.0,1.0,0.0}, {4.0,8.0,6.0,3.0,3.0}, {7.0,6.0,2.0,3.0,5.0}};

    //Computes the average value per row of array
    for(i = 0; i < 3; i++){
        printf("The average of row %d is %f\n", i, dAvg(array[i], 5));
    }

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM