從本質上講,目標是讓 4 名學生參加 3 個測驗成績。獲得這些成績(滿分 10 分)后,您可以計算每個學生的平均成績并顯示出來。盡管如此,這段代碼輸出了一些具有不同性質的平均值,這當然看起來不正確。
#include <stdio.h>
#define NUM_STUDENTS 4
#define NUM_QUIZZES 3
int main() {
//beginning of part 2 code
int arr_grades[NUM_STUDENTS][NUM_QUIZZES];
int st_val, students, quizzes;
//introduce the program
printf("\n\nHello Professor, and welcome to the grading portal.\n\n");
for (students = 0; students < NUM_STUDENTS; students ) {
//this allows the entry of three quiz grades per student to be stored
printf("Please enter 3 quiz grades for student %d: ", students 1);
for (quizzes = 0; quizzes < NUM_QUIZZES; quizzes )
scanf("%d", &arr_grades[students][quizzes]);
}
//here we will be getting the average of our inputs
printf("\nAverage Quiz Grades\n");
for (students = 0; students < NUM_STUDENTS; students ) {
printf("Student %d's average is: ", students 1);
//initialize
st_val = 0;
//this is the next look that will mimic the same for quizzes then provide us with the final result
for (quizzes = 0; quizzes < NUM_QUIZZES; quizzes )
st_val = arr_grades[students][quizzes];
printf("=\n", st_val / NUM_STUDENTS);
}
輸入:
Please enter 3 grades for student 1: 10 10 10
Please enter 3 grades for student 2: 2 0 1
Please enter 3 grades for student 3: 8 6 9
Please enter 3 grades for student 4: 8 4 10
錯誤的輸出:
Average Quiz Grades
Student 1's Average is: 7
Student 2's Average is: 0
Student 3's Average is: 5
Student 4's Average is: 5
預期輸出:
Average Quiz Grades
Student 1's Average is: 10.0
Student 2's Average is: 1.0
Student 3's Average is: 7.7
Student 4's Average is: 7.3
uj5u.com熱心網友回復:
這不是你計算平均值的方式。除以每個學生的測驗數,而不是除以學生人數。
此外,%d將以帶符號整數格式顯示平均值,因此您將失去精度(您將兩個整數相除,結果將是一個整數)。您可以使用%lf將結果顯示為double.
改變這一行:
printf("=\n", st_val / NUM_STUDENTS);
到:
printf("%.3lf\n",(double) st_val / NUM_QUIZZES);
檢查 的回傳值也是一個好主意scanf(),您無法確定它是否成功。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348094.html
