我只需要取考试成绩的平均值,然后将其放到最后一栏中,但我不知道该怎么做。我具有2D数组的功能,该函数采用包含成绩的文件名,但是第一列是学生ID,因此我不需要取其平均值。
这是我拥有的2D数组函数的代码。
#define x 10
#define y 6
void getData(float arr1[x][y])
{
FILE* graFile;
float arr2[x][y];
char userIn[50];
printf("Enter the text filename: ");
scanf("%s", userIn);
graFile = fopen(userIn, "r");
int studentId, test1, test2, test3, test4;
for(int i = 0; i < x; i++)
{
if(graFile != NULL)
{
fscanf(graFile, "%d%d%d%d%d", &studentId, &test1, &test2, &test3, &test4);
arr2[i][0] = studentId;
arr2[i][1] = test1;
arr2[i][2] = test2;
arr2[i][3] = test3;
arr2[i][4] = test4;
}
else
{
printf("\nThis file does not exist.");
return;
}
}
printf("\n %11s%11s%11s%11s%11s%11s", "Student Id","Test 1","Test 2","Test 3","Test 4","Final\n");
printf("*********************************************************************\n");
for(int i = 0; i < x; i++)
{
for(int j = 0; j < y; j++)
{
printf("%11.0f", arr2[i][j]);
}
printf("\n");
}
printf("*********************************************************************\n");
fclose(graFile);
return;
}
这给了我这个输出
Enter the text filename: grades.txt
Student Id Test 1 Test 2 Test 3 Test 4 Final
*********************************************************************
6814 85 86 92 88 0
7234 76 81 84 78 0
6465 87 54 68 72 0
7899 92 90 88 86 0
9901 45 78 79 80 0
8234 77 87 84 98 0
7934 76 91 84 65 0
7284 56 81 87 98 0
7654 76 87 84 88 0
3534 86 81 84 73 0
*********************************************************************
现在,我只需要创建一个新函数即可对该数组的测试成绩取平均值,并将其放到最后一列中,但是我很难做到这一点。感谢您能提供的任何帮助。
答案 0 :(得分:0)
void setAverage(float arr[][y], int x) {
for(int i = 0; i < x; i++) {
arr[i][5] = (arr[i][1] + arr[i][2] + arr[i][3] + arr[i][4]) / 4;
}
}