You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:45:00