#include <stdio.h>
int GetFigures(int n) //统计十进制数n的位数
{
int count=0;
do
{
count++;
n/=10; //丢弃个位数
}while(n!=0);
return count;
}
void PrintOrder(int n) //顺序输出十进制数n
{
int count;
int power=1;
if(n<0) //如果n为负数,取它的绝对值
{
printf("- ");
n=-n;
}
count=GetFigures(n); //得到n的位数
for(int i=0;i<count-1;i++)
{
power*=10;
}
do
{
printf("%d ",n/power); //输出最高位
n%=power; //丢弃最高位
power/=10;
}
while(n!=0);
printf("\n");
}
void PrintReverse(int n) //逆序输出十进制数n
{
if(n<0) //如果n为负数,取它的绝对值
{
printf("- ");
n=-n;
}
do
{
printf("%d ",n%10); //输出个位数
n/=10; //丢弃个位数
}
while(n!=0);
printf("\n");
}
int main()
{
printf("%d\n",GetFigures(1234));
printf("%d\n",GetFigures(1));
printf("%d\n",GetFigures(0));
printf("%d\n",GetFigures(-1));
printf("%d\n",GetFigures(-1234));
printf("\n");
PrintOrder(1234);
PrintOrder(1);
PrintOrder(0);
PrintOrder(-1);
PrintOrder(-1234);
printf("\n");
PrintReverse(1234);
PrintReverse(1);
PrintReverse(0);
PrintReverse(-1);
PrintReverse(-1234);
return 0;
}
调试结果为:
以1234为例:第一次除数为10^(位数-1),后面以此类推,直到n为0结束
1234/1000=1;1234%1000=234;
234/100=2; 234%100=34;
34/10=3; 34%10=4;
4/1=4; 4%1=0;*/