Две основные проблемы с вашим кодом. Во-первых, вы либо должны знать размер массива grade
во время компиляции, либо вы должны выделить его, как только узнаете, сколько вы хотите.
Например:
#define MAX_STUDENTS 100
int grade[MAX_STUDENTS];
scanf("%d", &numStudents);
if ( numStudents > MAX_STUDENTS ) {
printf("Sorry, cannot handle %d students, I can only handle %d\n",
numStudents, MAX_STUDENTS);
exit(1);
}
Или:
int *grade;
grade = malloc(sizeof(int) * numStudents);
if ( !grade ) {
printf("Failed to allocate memory for grades\n");
exit(1);
}
Другая проблема - ваш while
цикл. Вы хотите повторить, пока i < numStudents
.