我正在尝试根据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");
答案 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--;
}
}
另外,对于外部条件,您不需要while
。if
。
答案 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");