Ваш внешний цикл while
допускает отрицательные значения, которых вы, вероятно, хотите избежать, но в любом случае это не нужно для этого примера.
То, что вы хотите сделать, это начать с i
на 1
и считайте с условием i < num
.Затем вы печатаете 'num'
, а затем уменьшаете i
, а i > 0
.В этом случае выведите значение, прежде чем увеличивать или уменьшать его.Итак:
if (num > 0 && num <= 9) {
int i = 1; // make sure that you actually instantiate i
while (i < num) {
printf("%d", i++); // this increments i after using its value
}
printf("'%d'", num); // you could also print i, as i == num at this point
--i; // decrement i below num
while (i > 0) {
printf("%d", i--); // this decrements i after using its value
}
} else {
printf("Error: Number exceeds range!\n");
}
Используя здесь i++
и i--
, возвращается значение i
, а затем i
увеличивается / уменьшается.Если вы хотите использовать исходное значение i
несколько раз, прежде чем увеличивать / уменьшать его, измените его значение как отдельный шаг.
Ваше сообщение об ошибке было напечатано во всех случаях, независимо от того, ошибочно оно или нет.Это связано с тем, что он появился после цикла while
, поэтому он всегда выполнялся независимо от того, был ли цикл 1010 * пропущен или введен.Вот почему вы должны использовать оператор if
с else
для ошибки.