練習:計算學生作業分數的平均值
在此練習中,您將計算並儲存每個學生的作業分數平均值。 由於您知道每個學生的評分作業數量,因此平均的計算方式是將作業分數的總和除以作業數量。 為了儲存平均值,您將使用小數資料類型。
建立變數來儲存平均值
在這項工作中,您將為每個學生建立變數,以用來儲存其評分作業的平均分數。
在 .NET 編輯器中,找出用來顯示每個學生加總分數的
Console.WriteLine()
陳述式。在
Console.WriteLine()
陳述式上方建立空白的程式碼行。若要在您所建立的空白程式碼行上宣告將用於學生目前分數的小數變數,輸入下列程式碼:
decimal sophiaScore; decimal nicolasScore; decimal zahirahScore; decimal jeongScore;
請注意,您只會宣告
decimal
變數,而不是初始化它們。 您選擇decimal
類型是因為您在呈現平均成績,而且想要包含一個小數位數,如果您使用的是整數則無法使用。 如此一來,您可以看到學生的分數是否為 89.9,並將成績從 B 提升至 A。在上一個練習中,您已初始化整數變數,以便立即在主控台輸出中使用它們。 在此情況下,這些
decimal
變數將會在下一個步驟中使用現有的資料進行計算來初始化,從 Sophia 的分數開始。若要將班級中 Sophia 的目前分數指派給小數點
sophiaScore
,使用下列程式碼更新變數:decimal sophiaScore = sophiaSum / currentAssignments;
若要計算一名學生的目前班級分數,您可以將作業分數的總和除以作業總數。 班級中的每個學生都有五個作業,由您在設定期間初始化的
currentAssignments
代表。若要指派其餘學生的分數,請輸入下列程式碼:
decimal nicolasScore = nicolasSum / currentAssignments; decimal zahirahScore = zahirahSum / currentAssignments; decimal jeongScore = jeongSum / currentAssignments;
最後,您想要在此應用程式中顯示每個學生的成績。 在下一個步驟中,您將修改程式碼以顯示每個學生的分數,而不是他們的作業總和。
若要顯示每個學生的目前分數,請將顯示陳述式中的總和變數取代為分數變數:
Console.WriteLine("Sophia: " + sophiaScore); Console.WriteLine("Nicolas: " + nicolasScore); Console.WriteLine("Zahirah: " + zahirahScore); Console.WriteLine("Jeong: " + jeongScore);
請花一分鐘時間來考慮您要用來開發此應用程式的累加方法。
將問題細分成較小的部分是開發人員的重要技能。 以累加方式建立程式碼,並經常檢查您的工作,可讓您快速開發可靠的應用程式。 在此情況下,您可以重新定位
Console.WriteLine()
,確認計算在完成流程中的每個階段時正確無誤。若要檢視每個學生目前的成績值,請選取 [執行]。
您應該會看見下列輸出:
Sophia: 94 Nicolas: 83 Zahirah: 83 Jeong: 95
請注意,分數會以整數呈現,而不是小數點。
當您希望除法計算的結果為小數值時,除數或被除數的類型必須是小數 (或兩者)。 當您在計算中使用整數變數時,需要套用一個稱為轉型的技術,將整數「轉換」到小數。
針對分數計算,您可以藉由轉換總和變數或
currentAssignments
作為小數類型來取得小數結果。 在此情況下,您會將總和轉換成小數。在除法運算中,若要將整數變數轉換成小數,請按照以下方式更新程式碼:
decimal sophiaScore = (decimal) sophiaSum / currentAssignments; decimal nicolasScore = (decimal) nicolasSum / currentAssignments; decimal zahirahScore = (decimal) zahirahSum / currentAssignments; decimal jeongScore = (decimal) jeongSum / currentAssignments;
被除數或除數只需為小數類型,除法計算就會產小數值的結果。 在這裡,您只會轉換用來作為被除數的總和變數。
請檢閱下列老師用來分配等第成績的成績標準:
97 - 100 A+ 93 - 96 A 90 - 92 A- 87 - 89 B+ 83 - 86 B
下一個步驟是根據他們的總分數,為每個學生加入等第成績。 將等第成績新增至顯示的輸出會是手動流程。
若要判斷每個學生目前的成績值,請選取 [執行]。
針對每個學生使用目前的成績來判斷適當的等第成績,視需要四捨五入或向下捨入。
若要在每個學生的數字分數之後附加等第成績,請如下所示更新您的程式碼:
Console.WriteLine("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
檢查您的工作
在此工作中,您將執行程式碼,並驗證輸出是否正確。
將您的程式碼與下列項目進行比較:
int currentAssignments = 5; int sophia1 = 93; int sophia2 = 87; int sophia3 = 98; int sophia4 = 95; int sophia5 = 100; int nicolas1 = 80; int nicolas2 = 83; int nicolas3 = 82; int nicolas4 = 88; int nicolas5 = 85; int zahirah1 = 84; int zahirah2 = 96; int zahirah3 = 73; int zahirah4 = 85; int zahirah5 = 79; int jeong1 = 90; int jeong2 = 92; int jeong3 = 98; int jeong4 = 100; int jeong5 = 97; int sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5; int nicolasSum = nicolas1 + nicolas2 + nicolas3 + nicolas4 + nicolas5; int zahirahSum = zahirah1 + zahirah2 + zahirah3 + zahirah4 + zahirah5; int jeongSum = jeong1 + jeong2 + jeong3 + jeong4 + jeong5; decimal sophiaScore = (decimal) sophiaSum / currentAssignments; decimal nicolasScore = (decimal) nicolasSum / currentAssignments; decimal zahirahScore = (decimal) zahirahSum / currentAssignments; decimal jeongScore = (decimal) jeongSum / currentAssignments; Console.WriteLine("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
若要執行您的程式碼,並使用等第成績顯示學生分數,請選取 [執行]。
若要確認您的程式碼如預期般運作,請比較您的應用程式輸出與下列輸出:
Sophia: 94.6 A Nicolas: 83.6 B Zahirah: 83.4 B Jeong: 95.4 A
您的程式碼現在應會將學生分數顯示為小數值,您應該會看到您分配的等第成績。
如果您的程式碼顯示不同的結果,您必須檢閱程式碼以尋找錯誤並進行更新。 再次執行程式碼,查看您是否已修正此問題。 請繼續更新和執行程式碼,直到其產生預期的結果為止。
重要
切記勿刪除您到目前為止撰寫的任何程式碼。 在下一個練習中,您將以此程式碼為基礎進行構建。