繁体   English   中英

数组C中数字的总和和平均值

[英]Sum and average of numbers within an array C

我对如何计算数组中的数字的平均值和总和感到困惑,我可以生成数字,但程序不断崩溃。 我对数组和指针都很新,任何帮助/信息都有帮助。 谢谢!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int sum(int *myInts)
{
    int sum=0,i;

    for(i=0; i < 20; i++){
        sum += myInts[i];
    }
    return sum;
}

int mean(int *myInts)
{
    int mean=0,i;

    for(i=20; i < 20; i++){
        mean += myInts[i] / 20;
    }
    return mean;
}

int main(int i)
{
    srand(time(NULL));
    int *myInts[20];

    for(i=0; i < 20 ; i++){
        myInts[i] = rand() % 15;
    }
    printf("The array is: ");
    for(i=0; i < 20; i++){
        printf(" %d", myInts[i]);
    }
    printf("\nThe sum of the array is: %d", sum(myInts[20]));
    printf("\nThe mean of the array is: %d", myInts[20],mean(myInts[20]));

    getchar();
    return 0;
}
int *myInts[20];

在这里,您已经声明了一个指向int指针数组,而不是一个int数组。 main函数中你可以使用它,因为整数可以转换为指针和返回,但是当你调用函数时它会成为一个问题:

sum(myInts[20])

这将带有偏移量20的数组元素传递给函数。 因为数组索引从0开始,大小为20的数组的索引从0到19.所以你读过数组的末尾,然后在函数中将它作为指针处理并取消引用。 这会调用未定义的行为 ,这是导致崩溃的原因。

你想要声明一个int数组:

int myInts[20];

并将数组传递给函数:

sum(myInts);

暂无
暂无

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

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