#include <stdio.h>
int main(void) {
int numStudents;
int i = 0 ;
printf("How many students are in your class? \n");
scanf("%d", &numStudents);
int grade[numStudents];
while ( i > numStudents ){
scanf("%d", &grade[i]);
printf("\n");
i++;
}
}
我想要它做的只是获得学生人数并允许许多扫描仪获得成绩。谢谢。
答案 0 :(得分:4)
while ( i > numStudents ){
scanf("%d", &grade[i]);
printf("\n");
i++;
}
您的while
条件是倒退的;循环体永远不会执行。
答案 1 :(得分:1)
您的代码存在两个主要问题。首先,您必须在编译时知道数组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
时进行迭代。
答案 2 :(得分:1)
while ( i > numStudents ){
scanf("%d", &grade[i]);
printf("\n");
i++;
}
i
0
首先numStudents
i
大于或等于i > numStudents
因此while ( i < numStudents ){
scanf("%d", &grade[i]);
printf("\n");
i++;
}
在首次检查时将为假,并且正文不会被执行。条件应该是:
malloc
此外,您应该在块的开头分配内存,或使用{{1}}分配所需大小的内存块