实质上,我们的目标是录取4名学生,并输入每个学生3级的测验成绩。一旦你有了这些成绩(十分之一),你就拿出每个学生的平均成绩并显示出来。尽管如此,这段代码输出了一些不同性质的平均值,这显然是不正确的。
#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);
}输入:
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发布于 2021-11-04 21:32:01
这不是你计算平均值的方法。除以每个学生的测验数,而不是除以学生的数量。
此外,%d将以带符号整数格式显示平均值,因此您将失去精度(您正在除以两个整数,结果将是一个整数)。可以使用%lf将结果显示为double。
更改这一行:
printf("%3d\n", st_val / NUM_STUDENTS);至:
printf("%.3lf\n",(double) st_val / NUM_QUIZZES);检查scanf()的返回值也是个好主意,您不能确定它是否成功。
https://stackoverflow.com/questions/69845874
复制相似问题