编程问题,请高手帮我解释下这程序,要清楚的才给分!!谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/10 04:52:15
#include<stdio.h>
#include<conio.h>
main()
{
int n,b,i=0;
int a[10];
scanf("%d",&n);
while(n>9)
{
a[i++]=n%10;
n=n/10;
}
a[i]=n;
b=i;
for(i=0;i<=b;i++)
printf("%d",a[i]);
getch();
}
-----------------------------------------
a[i]=n;
b=i;
for(i=0;i<=b;i++)
printf("%d",a[i]);
getch();
}
这里特别不懂

当n>9的时候运行
{a[i++]=个位上的数值
n=输入的数值/10
} //运算完以后n应该是最高位上的数值,肯定是不会小于1大于9的
a[i]=n; a[i]=最高位上的数
b=i; b=i也就是输入的数值的位数-1
for(i=0;i<=b;i++)
printf("%d",a[i]); 输出a 这个程序最终的目的是反向输出,比如输入12345会输出54321
getch();

你这个程序实现的是数字顺序的翻转。比如输入654,就输出456.while部分用于把数字的各个数分开,放入数组a中。这里,放入的时候是个位,十位,百位的顺序。当while结束的时候,还有最有一位,也就是输入数的最高位在变量n中,所以,第一句就是a[i]=n;这样才完整。
然后就简单了,因为i记录的数字是由几个数构成的,所以,就从0开始到i输出。这里之所以b=i;是为了再次使用变量i。for循环中依次输出。