Начинающий до C. Запуск приложения - PullRequest
0 голосов
/ 02 июля 2011
#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++;
    }
}

что я хочу, это просто получить количество учеников и позволить такому количеству сканеров получать оценки.Благодарю.

Ответы [ 3 ]

4 голосов
/ 02 июля 2011
while ( i > numStudents ){
    scanf("%d", &grade[i]);
    printf("\n");
    i++;
}

Ваше while состояние задом наперед; тело цикла никогда не будет выполнено.

1 голос
/ 02 июля 2011
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 голос
/ 02 июля 2011

Две основные проблемы с вашим кодом. Во-первых, вы либо должны знать размер массива 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...