While循环递增和递减

时间:2019-01-24 08:59:07

标签: c

我正在尝试根据1-9范围内的单个用户输入来递增和递减值。
例如。如果用户输入5,则程序输出1234'5'4321。所以目标是让它从1递增到输入数字,然后从输入数减少到1。
我目前可以递增和递减,但它递减为0而不是1,然后会产生我不希望产生的错误。目的是使用while循环创建该循环,我怀疑我的错误是由第二个嵌套的while循环产生的,但我不确定如何解决。我尝试将条件更改为“ num> 0”,逻辑是减量应以1结尾,但这不能解决问题

while(num != 0 && num <= 9){
        while(i != num){
            i++;
            printf("%d", i);
        }
            while(num != 0){
                num--;
                printf("%d", num);
        }

    }
    printf("Error: Number exceeds range!\n");

3 个答案:

答案 0 :(得分:3)

这是因为您首先递减num,然后打印。

num = 1进入循环并递减到0,从而打印0

if (num != 0 && num <= 9){
        while(i < (num-1)){
            i++;
            printf("%d", i);
        }

        while(num != 0){
           printf("%d", num);
           num--;
        }
    }

另外,对于外部条件,您不需要whileif

答案 1 :(得分:3)

您的外部while循环允许使用负值,您可能想避免,但无论如何对于本示例来说,它都是不必要的。

您要做的是从i的{​​{1}}开始,并以条件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循环,它总是被执行。这就是为什么您应该使用带有while的{​​{1}}语句来解决错误的原因。

答案 2 :(得分:-2)

It works with small modification 
while(num != 0 && num <= 9){
        while(i != num){
            i++;
            printf("%d", i);
        }
            while(num){
               --num;
                if(num)
                printf("%d", num);
        }
}
printf("Error: Number exceeds range!\n");