簡體   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