【发布时间】:2015-11-19 05:50:14
【问题描述】:
我在作业问题上需要帮助。
作业的描述是:
用C语言设计一个程序,使用引用调用的方法,它 生成由 M 个学生组成的班级的成绩统计信息 在一个学期的课程中进行 N 次测验。测验全部 进行同等权重,每个测验的成绩为 10 分 点。该程序将按照指示的顺序执行以下操作 程序执行时:
- 要求用户在键盘上输入学生人数M和测验次数N,M代表人数 行数和 N 表示二维中的列数 浮点数数组 x[M][N]。
- 要求用户在键盘上键入数组 x[M][N] 的所有元素的值。
- 在控制台上显示输入的数组元素值的M行N列。
- 生成并在控制台上显示一维数组 p[M] 的元素,其中该数组的每个元素 p[M] 代表每个 M 学期的平均成绩 学生。
- 生成并在控制台上显示一维数组 q[N] 的元素,其中 q[N] 的每个元素代表 N 个测验中每个测验的班级平均成绩。
- 生成并在控制台上显示整个学期整个班级的平均成绩 z。
这是我到目前为止所做的代码:
#include <stdio.h>
#define students 300
#define quizzes 20
void averageGradeOfStudents(int M, int N, float p[], float *xPtr);
float averageGradeOfClass();
float averageGradeOfWholeClass();
int main() {
int M, N;
float x[students][quizzes];
printf("Enter the number students (Maximum: 300): ");
scanf_s("%d", &M);
printf("\nEnter the number of Quizzes (Maximum: 20): ");
scanf_s("%d", &N);
for (int i = 0; i < M; i++) {
for (int k = 0; k < N; k++) {
printf("Enter the grade for student %d, Quiz %d: ", i, k);
scanf_s("%f", &x[i][k]);
}
}
printf("\n--------------------------------------------------------------------------------\n\n");
for (int k = 1; k <= N; k++) {
printf("\t\tQuiz%d", k);
}
for (int i = 0; i < M; i++) {
printf("\nStudent%d Grades: ", i);
for (int k = 0; k < N; k++) {
printf("%.2f\t\t", x[i][k]);
}
}
printf("\n\n\n--------------------------------------------------------------------------------\n\n");
float p[students];
averageGradeOfStudents(M, N, p, &x[0][0]);
float q[quizzes];
float z;
getchar();
return 0;
}
void averageGradeOfStudents(int M, int N, float p[], float *xPtr) {
float grade[students];
for (int i = 0; i < M; i++) {
for (int k = 0; k < N; k++) {
grade[i] += *(xPtr + i);
}
}
for (int k = 0; k < M; k++) {
p[k] = grade[k] / N;
printf("The average grade of student%d is: %.2f\n\n", k, p[k]);
}
}
float averageGradeOfClass() {
}
float averageGradeOfWholeClass() {
}
我遇到的问题是我无法找到一种方法来单独对数组的每一行求和。
【问题讨论】: