Вы можете рассчитать средний балл, как это, почти как ваша программа. Обратите внимание, что я добавил количество студентов к вызову функции, но ваш тип Class
должен действительно содержать его, и было бы лучше передать Class
в функцию, а не только в массив, который она содержит.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
typedef struct Student{
char name [20];
int grade;
int number;
}Student;
typedef struct Class{
char className[20];
Student Students[30];
}Class;
double calculateAverageGrade(Student *Students, int count) { // pass the number of students
int i;
int sum = 0;
for(i = 0; i < count; i++) { // don't guess the number of students
sum += Students[i].grade;
}
return (double)sum / count; // otherwise integer division
}
int main(void) {
Student s1 = { "John", 75, 758 };
Student s2 = { "Jack", 85, 123 };
Student s3 = { "Lisandra", 50, 321 };
Class c1 = {'\0'};
strcpy(c1.className, "Physics");
c1.Students[0] = s1;
c1.Students[1] = s2;
c1.Students[2] = s3;
printf("The average grade in %s is %.2f\n", c1.className,
calculateAverageGrade(c1.Students, 3));
return 0;
}
Вывод программы:
The average grade in Physics is 70.00