2016-03-08 63 views
-2

當這個程序返回平均值時,每次都是零,我沒有正確地將值傳遞給average()函數嗎?我不知道要修復什麼,因爲我嘗試切換數據類型並輸出%f。
我不想爲我完成代碼,只需要一些指導。感謝任何可以提供幫助的人。爲什麼我的用戶定義數組的平均值不正確? C

#include <stdio.h> 



float average(float arr[], float num) { 

for (z = 0; z < num; ++z) { 
    sum = arr[z]+1; 
} 

    avg = sum/num; 

    return avg; 

} 

int main(){ 
    int count; 
    int a; 
    float initial[a]; 
    float avg; 
    avg = average(initial, a); 
    printf("enter number of values you'd like averaged.\n "); 
    scanf("%i",&a); 
    count = a; 
    printf("enter numbers you'd like averaged\n"); 
    for(a= 0; a < count; a++) 
    { 
     scanf("%f",&initial[a]); 
    } 
    printf("The average is %d",avg); 
    return 0; 
} 
+2

這是不可讀的。正確縮進和格式化代碼。 – Olaf

+0

我沒有看到任何平均值。它只是添加到數組元素.. –

+0

您的平均功能是錯誤的。它總是會返回'(arr [num] + 1)/ num'。 –

回答

2

存在多個問題。在此部分代碼:

for (z = 0; z < num; ++z) { 
    sum = arr[z]+1; 
} 

您還沒有計算或初始化的總和,你計算的最後一個元素加1用途:

float sum = 0, avg; 
for (z = 0; z < num; ++z) { 
    sum += arr[z]; 
} 

除了這個,你不填你數組,然後計算平均值。還有其他各種問題。這是一個生動的例子。 http://ideone.com/5nOV81

+0

是的,這照顧了它,畢竟不是那麼糟糕,儘管對於真正的編碼者來說,任何錯誤都可能是不可接受的。讓我度過了一個真正的關鍵點,謝謝 – MessatsuX

2

main調用你的函數獲取值入陣後(現在數組初始化) -

for(a= 0; a < count; a++) 
{ 
    scanf("%f",&initial[a]); 
} 
avg = average(initial, a); 
printf("The average is %f",avg); 
         ^^ note specifier is %f not %d as you used 

而且在功能average而不是這個 -

sum = arr[z]+1; 

做 -

sum+= arr[z]; //initliaze sum to 0 before loop 
1

你的成績永遠爲零,因爲你正在呼籲甚至閱讀變量a和陣列initial前的平均方法...

avg = average(initial, a); 
0

你有幾個失誤

,這將是總和+ = ARR [Z];
,你必須閱讀所有數字

for(a= 0; a < count; a++) 
{ 
scanf("%f",&initial[a]); 
} 
avg = average(initial, a); 

雖然平均的返回類型爲浮動,所以你必須使用%F printf中後,初始化總和爲0

你必須調用函數平均

printf("The average is %f",avg); 
相關問題