C语言计算4名学生3次测验平均分结果错误求助排查
代码问题排查与修复
核心问题点
- 平均分计算除数错误:当前代码用每名学生的总分除以学生总数
NUM_STUDENTS(值为4),实际应该除以每名学生的测验次数NUM_QUIZZES(值为3),这是输出数值完全不符合预期的核心原因。比如学生1总分30,除以4得到7,和你给出的错误输出第一个结果完全匹配。 - 整数除法截断小数:你用两个int类型变量做除法,结果默认还是int类型,会直接截断小数部分,无法输出预期的小数点后一位的结果。
- 输出格式符不匹配:当前用
%d输出整数,无法展示浮点型的平均分结果。
修正后完整代码
#include <stdio.h> #define NUM_STUDENTS 4 #define NUM_QUIZZES 3 int main() { int arr_grades[NUM_STUDENTS][NUM_QUIZZES]; int st_val, students, quizzes; printf("\n\nHello Professor, and welcome to the grading portal.\n\n"); for (students = 0; students < NUM_STUDENTS; students++) { printf("Please enter 3 quiz grades for student %d: ", students+1); for (quizzes = 0; quizzes < NUM_QUIZZES; quizzes++) scanf("%d", &arr_grades[students][quizzes]); } printf("\nAverage Quiz Grades\n"); for (students = 0; students < NUM_STUDENTS; students++) { printf("Student %d's average is: ", students+1); st_val = 0; for (quizzes = 0; quizzes < NUM_QUIZZES; quizzes++) st_val += arr_grades[students][quizzes]; // 强制转换为浮点型计算,除以测验次数3,保留1位小数输出 printf("%.1f\n", (double)st_val / NUM_QUIZZES); } return 0; }
验证效果
用你提供的输入样例运行修正后的代码,输出完全匹配预期结果:
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
内容的提问来源于stack exchange,提问作者neelish
相关产品推荐
相关产品推荐

