я не знаю, что не так с моим решением, я не могу написать a[2] . Он завершается в конце первого цикла while

#arrays #c #input #while-loop

#массивы #c #ввод #цикл while

Вопрос:

 void Nhap_mang(int a[], int n){
    for(int i = 0;i<n;i  ){
        
        int status;char junk;
        printf("nEnter a number %d : ",i 1);status = scanf("%d", a[i]);
        while(status < 1){                   
            printf("nwrong input, do it again!");
            scanf("%c", amp;junk);
            printf("nEnter a number: ");
            status = scanf("%d", a[i]);
        }  
        
    }
}
 

Комментарии:

1. scanf("%d", a[i]) —> scanf("%d", amp;a[i]) , но есть и другие проблемы.

2. Какую ошибку вы получаете? Пожалуйста, подробнее о вашей проблеме.

3. Какую ошибку вы получаете? Какое значение передается a[] и n в Nhap_mang()?

Ответ №1:

Вы должны установить status переменную в 0 (или <1) на каждой (внешней) итерации цикла. Невыполнение этого требования приведет к получению мусорного status значения на первой итерации, и, если вам повезет, оно будет < 1, после чего вы будете использовать устаревшее значение на следующей итерации, чтобы оно никогда больше не попадало во внутренний цикл.