从n运行循环的C程序直到1

时间:2017-03-04 13:41:23

标签: c

这是一个代码,它运行从n到达1的循环,所以如果n=5,则输出为5,4,3,2,1。

#include <stdio.h> 
int main() {     
  int i, n; 
  printf("Enter value of n: ");     
  scanf("%d", &n); 
  for(i = n; i >= 1; i--) {         
    printf("%d\n", i);     
  } 
  return 0; 
}

我想将for循环更改为while循环,并进行了这些更改

#include <stdio.h>
int main() {
  int i = 1,n;
  printf("Enter value of n: ");
  scanf("%d", &n);

  while(n > i){
    n--;
    printf("%d\n", n);
  }
  return 0;
}

但它从n-1值开始,因此如果n=5,则输出为4,3,2,1。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:2)

问题是,您在减少n后打印答案。交换线。 然后,您需要将while循环中的条件更改为n>=i

答案 1 :(得分:0)

在此代码中,您首先减少数字并打印n的值。因此,如果n = 5,它首先减1然后打印4,再次减1并打印3,这继续。

while(n>i){
   n--;
   printf("%d\n", n);
 }

为了修复它,首先打印数字,然后减少它。固定代码如下:

while(n>i){
   printf("%d\n", n);
   n--;
 }