2017-07-03 88 views
-1

我真的堅持這一直試圖解決它現在相當一段時間。 我必須編寫一個程序,我應該輸入1到10之間的5個數字,然後計算平均值,僅在使用LOOP時使用,但在數字不符合要求時不必退出。然後,我必須寫一個相同的代碼的變體,但這次你可以輸入所有你想要的數字,當輸入0時,它必須計算出平均值並退出查找5個數字和N個數字的平均值只用while和while循環在C中

這是我到目前爲止的地方

#include <stdio.h> 

int main(void) 
{ 
    int n, i = 1; 
    float add; 
    float avg; 

    do 
    { 
     printf("enter the number %d:\n", i++); 
     scanf("%d", &n); 
     add = add + n; 
    } while(n > 0 && n < 11); 

    avg= (add/5); 

    printf("%.1f", avg); 

    return 0; 
} 

在輸入5之後,它將繼續詢問數字。並且平均值不正確

+2

這是他們現在在大學教學的內容嗎?上帝...... – Darius

+0

「舞會」必須是一個錯字。我代替了「平均」在我的腦海。 – phatfingers

+0

變量'add'未初始化。 'add = add + n'產生未定義的行爲。 – Pablo

回答

2

首先,您使用n作爲while條件變量,但也可以作爲變量來掃描輸入。例如,如果我通過掃描20來啓動程序,則您的while循環將在第一次交互時退出。改用你的i變量,並在每次循環執行時增加它。

do{ 
    ... 
}while(i <= 5); 

第二,如果你想在1和10之間的唯一號碼,那麼你應該爲它編寫的條件。例如:

printf("enter the number %d:\n", i); //do not increment it here! 
scanf("%d",&n); //assuming "n" as your variable to scan 
if(n > 0 && n < 11){ 
    add += n; 
    i++; //increment it here instead! 
} 

第三,爲了初始化變量拿不到鞭打值

float add = 0; 
float avg = 0; 
int i = 1; 

最後,分配你的結果(不是強制性的,但因爲你是使用它,我會保持它):

avg = add/5.0f 

並顯示:

printf("%.1f", avg); 
+0

謝謝,我完全理解。 – antimage64

+0

另一件讓我想到的問題是:如果你初始化你的''''變量,例如'i = 1',你可以改變'do-while'循環爲while循環:while (我<= 5)'。請記住,「do-while」循環和「while」循環並不是一回事。 – woz