這是我的主要功能:
void arrCalc(int*, int, int*, int*, int*, double*, int*);
int main()
{
int a[5] = {1, 2, 3, 4, 5}, n = 5, *max, *min, *sum, *isEven;
double *avg;
arrCalc(a, n, max, min, sum, avg, isEven);
printf("%d %d %d %lf %d", *max, *min, *sum, *avg, *isEven);
return 0;
}
這是我的未來:
void arrCalc(int *arr, int n, int *max, int *min, int *sum, double *avg, int *isEven)
int i;
*min = arr[0];
*max = arr[0];
for (i = 0; i < n; i )
{
if (arr[i] < *min)
*min = arr[i];
if (arr[i] > *max)
*max = arr[i];
if (!(arr[i] % 2))
*isEven = 1;
*sum = arr[i];
}
*avg = (double) *sum / n;
}
當我運行程式時,它什么也不列印。我認為它與 arrCalc 中的 min 和 max 的定義有某種聯系。有人可以更正我的代碼嗎?
uj5u.com熱心網友回復:
在main(),你宣告min,max,sum,和isEven作為int*,但你不分配的實際任何空間int的那他們應該被指向。您應該只int在 main 中宣告這些變數,然后將指向它們的指標傳遞給您的arrCalc函式,如下所示:
int main()
{
int a[5] = {1, 2, 3, 4, 5}, n = 5, max, min, sum, isEven;
double avg;
arrCalc(a, n, &max, &min, &sum, &avg, &isEven);
printf("%d %d %d %lf %d", max, min, sum, avg, isEven);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372358.html
上一篇:為什么這兩個條件都是錯誤的?
下一篇:如果(*ptr)[variable]表示“指向陣列的指標”,那么(*ptr)[variable]='\0'是什么意思?
