首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图从4名学生(由用户输入定义)中找出平均3次测验成绩,但我不知道哪里出了问题(下面的代码)。

试图从4名学生(由用户输入定义)中找出平均3次测验成绩,但我不知道哪里出了问题(下面的代码)。
EN

Stack Overflow用户
提问于 2021-11-04 21:12:26
回答 1查看 49关注 0票数 1

实质上,我们的目标是录取4名学生,并输入每个学生3级的测验成绩。一旦你有了这些成绩(十分之一),你就拿出每个学生的平均成绩并显示出来。尽管如此,这段代码输出了一些不同性质的平均值,这显然是不正确的。

代码语言:javascript
复制
#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("%3d\n", st_val / NUM_STUDENTS);
}

输入:

代码语言:javascript
复制
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

输出错误:

代码语言:javascript
复制
    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

预期产出:

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-04 21:32:01

这不是你计算平均值的方法。除以每个学生测验数,而不是除以学生的数量。

此外,%d将以带符号整数格式显示平均值,因此您将失去精度(您正在除以两个整数,结果将是一个整数)。可以使用%lf将结果显示为double

更改这一行:

代码语言:javascript
复制
printf("%3d\n", st_val / NUM_STUDENTS);

至:

代码语言:javascript
复制
printf("%.3lf\n",(double) st_val / NUM_QUIZZES);

检查scanf()的返回值也是个好主意,您不能确定它是否成功。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69845874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档