while循环中循环标志的问题

#include

int main()
{ int n, i, count;
i=0;
count=0;
scanf("%d", &n);
char pinyin [11][5]={"ling","yi","er","san"
,"si","wu","liu","qi","ba","jiu"};
int store [10];

if (n==0)
printf("ling");

while (n!=0)
{if (n>0)
 {store [i]=n%10;
  n/=10;
  i++;}

  else
  
  {store [i]=-n%10;
  n=-n/10;
  i++;
  printf("fu ");}
}
  

 while (i>=0)
{ 
  i--;
  if (count>0)
  {printf(" ");}
  count++;
  printf("%s", pinyin [store [i]]);
 
  
}
 return 0;

}

一个数字拼音的程序,想问问大家,为什么最后while输出时候,必须i--在最前(不然结果就奇怪的错了),其他while自增自减都在循环最后。

因为上面while循环中,i++在后面,导致实际i值多加了1
因此下面的while,必须i先减去1

对于为什么在前,为什么在后,其本质就是如何去实现你的逻辑思路,代码不过就是对你逻辑思路的模拟。我们在写代码前可以先把自己的思路写在纸上,然后用代码一步一步去实现我们的思路就可以了