Рассмотрим этот цикл вашей программы:
while(nbr < 1 || nbr > 10)
{
printf("\nEnter number %d of 5: ",ctr+1);
scanf("%d",&nbr);
}
Здесь Этот цикл будет работать в первый раз потому что вы определили nbr = 0
, поэтому он удовлетворяет условию цикла и входит в него, затем до тех пор, пока вы не возьмете число между 1
и 10
, оно продолжает работать, как только вы берете число, которое находится между 1
и 10
, вы lea ve, но теперь, потому что nbr
теперь находится между 1
и 10
, вы больше не войдете в цикл.
Этот цикл будет выполняться только один раз, поэтому вы не можете принимать ввод всех 5
номеров.
Если вы после хранения nbr
в массиве, назначьте nbr = 0
, теперь он снова перейдет в цикл, и ваш код будет работать нормально.
Правильный код
#include <stdio.h>
int array[5];
int main(){
int ctr= 0,
nbr = 0;
printf("Enter five numbers from 1-10\n");
while(ctr<5){
while(nbr < 1 || nbr > 10)//First time it enter the loop because nbr = 0
//But after that nbr is between 1 and 10
//So it does not enter again and you can not input more number.
{
printf("\nEnter number %d of 5: ",ctr+1);
scanf("%d",&nbr);
}
array[ctr]= nbr;
nbr = 0; //So That Loop Run Again
ctr++;
}
for (ctr=0;ctr<5;ctr++)
printf("Value %d is %d\n",ctr+1,array[ctr]);
return(0);
}
Также Там другие способы, которые вы можете подойти к этой проблеме, вы можете использовать do-while
цикл, который выполняется в первый раз, все время, а затем проверить состояние.
Другой метод, используя делать-то время цикла
do
{
printf("\nEnter number %d of 5: ",ctr+1);
scanf("%d",&nbr);
} while (nbr < 1 || nbr > 10);
Теперь здесь сначала введите номер и хранится в nbr
, если он находится между 1
и 10
выхода из цикла и сохраняется в массив, и теперь вы снова запускаете внешний цикл, и снова вы сталкиваетесь с этим, он всегда выполняется в первый раз, а затем проверяет состояние, поэтому вам не нужно повторно инициализировать nbr = 0
каждый раз.
Совет
Всегда Опишите проблему более четко и сказать, что вы ожидали это делать и то, что он делает так, что другие могут лучше понять его и дать вам лучше и быстрые решения.
Почему это не работает? –
В чем проблема? Не могли бы вы рассказать об этом? Разве он не строится? Сбой при запуске программы? Дать неожиданные результаты? Пожалуйста, найдите время, чтобы [прочитать о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask). –
@KamiKaze Это не имело ничего общего с его проблемой. –