我創建了兩個if語句進入鏈表,並檢查有多少數字高於平均數,並查看有多少數字低於平均數。當我運行程序時,我的理解是if語句只計算一個數字。另外,程序運行時,只調用一個if語句,而不是兩個。也許我忽略了一些東西?'CalAverage'函數中if語句的問題
double CalAverage (NewNumber *start){
int res;
double average = 0;
double total = 0;
int n = 1;
int x = 1;
int y = 1;
/*if (res != 1){
fprintf(stderr, "Something bad happened in CalAverage()\n");
return add;
}*/
while (start->next){
average += start->newNum;
start = start->next;
++n;
}
average += start->newNum;
total = average/n;
if(total < start->newNum){
++x;
printf("Numbers greater than average: %d\n",x);
}else if(total > start->newNum){
++y;
printf("Numbers less than average: %d\n", y);
}
printf("The average is: %lf\n",total);
return total;
return x;
return y;
}
你有太多的return語句;你只能從函數返回一個值。只有一個if語句可以是true(或者none,如果total == start-> newNum),所以你只能看到其中一個輸出。你錯過了另一個循環;首先計算平均值,然後您需要再次遍歷列表併爲每個數字打印,如果它高於或低於平均值。 – Robert