2009-11-12 80 views
-1

非常卡住這個問題。我最終得出了平均值,但它給出了負值3200萬等。這裏是我的代碼:C編程(GPA計算器)

#include <stdio.h> 
#include <stdlib.h> 


int main() 
{ 

float fArray[30]; 
int choice = 0; 
int x = 0; 
float total = 0; 
float avg = 0; 

printf("1. Calculate GPA Average"); 
printf("\n2. Enter GPA"); 
printf("\n3. Quit"); 
printf("\n\nEnter your choice (1-3): "); 
scanf("%d", &choice); 

if(choice == 2) 
{ 
    printf("\n\nEnter GPA: "); 
    scanf("%.2f\n\n", &fArray[x]); 
    total = total + fArray[x]; 
} 
else if(choice == 3) 
{ 
    return 0; 
} 
else if(choice == 1) 
{ 
printf("The average is: %f", total/x); 
} 

for(x = 1; x < 30; x++) 
{ 
    fflush(stdin); 
    int temp = 0; 
    printf("1. Calculate GPA Average"); 
    printf("\n2. Enter GPA"); 
    printf("\n3. Quit"); 
    printf("\n\nEnter your choice (1-3): "); 
    scanf("%d", &temp); 

    if(temp == 2) 
    { 
     printf("\n\nEnter GPA: "); 
     scanf("%.2f\n\n", &fArray[x]); 
    } 
    else if(temp == 3) 
    { 
     break; 
    } 
    else if(temp == 1) 
    { 
printf("The average is: %f", total/x); 
    } 
} 

system("pause"); 
} 
+4

這是一個功課題嗎?如果是這樣,請將其標記爲家庭作業。 – snicker 2009-11-12 00:55:22

+1

聞起來像給我做功課。 – 2009-11-12 00:58:52

+1

爲什麼會出現代碼重複? – 2009-11-12 00:59:58

回答

0

忘了補充的循環

+0

如果你正在做的唯一事情是增加總數,fArray也沒有任何用處。 – Jimmy 2009-11-12 01:10:15

6

這顯然是一個家庭作業問題總,你是清楚的編程新手。你的老師可能會給你比我們更好的幫助。

一些提示:

  • 你有複製和粘貼代碼。你應該擺脫程序的前半部分;你應該只保留變量聲明和循環。
  • 爲了清楚起見,C程序員通常在字符串的末尾有\ n,而不是下一個字符串的開頭。
  • 您不應該使用「for」循環遍歷「x」的值來驅動用戶界面。如果用戶按下「1」28次計算GPA平均值,然後按「2」輸入一個等級,然後再按「1」再次計算GPA平均值,即使只輸入了等級30一年級。你不應該迭代'x'。相反,你應該用「while(True)」循環來驅動用戶界面。只有當用戶選擇輸入GPA時,才應增加'x'。
  • 您的計算'總計'的代碼僅在第一次運行時('x'爲0時)。沒有其他分配給「總計」。現在你是否看到複製粘貼代碼的危險?
+0

我正在輸入類似的東西,你打敗了我。我唯一需要補充的是'system(「pause」)'看起來很俗氣 - 對於OP來說寫他自己的「請按任意鍵繼續」提示會更好。 – 2009-11-12 01:15:40

1

從哪裏開始...使用do {...} while()。你沒有初始化你的浮點數組。你沒有記錄輸入了多少個等級。你也不會更新for循環中的總變量,所以不管他們輸入什麼內容,顯示的總數都不會改變。你甚至從來沒有使用聲明的平均變量。

這裏有一個提示:首先想想算法;即你將如何執行這些操作?你能否將其他操作(如計算平均值)與其他操作分開(如獲取用戶輸入)?一旦你已經想出你想要使用的過程,考慮什麼類型的數據結構和程序流(循環)結構將是適當的,然後開始編碼;它會帶來很大的變化,並且實現起來會更容易。

0

嘗試把一些調試之類的語句

printf("Total is: %d\n", total); 

printf("x is: %d\n", x); 

內的「如果」語句(或任何地方,你要檢查你的總價值)。你會很快意識到你錯在哪裏。