[英]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.