一、输出整数的位数
运用“去尾法”获取整数n的位数。“去尾法”是将整数n/10后重新赋值给n,可将整数n的最后一位数去掉。每次去掉一位,计数器+1,直到整数n被赋值为0时,计数器停止计数,此时计数器的数字为整数n的位数。考虑当整数n取0时,运用do-while循环语句可以进入循环。
源代码:
int GetFigures(int n)
{
int count=0; //计数器
do
{
n=n/10; //“去尾法”,对n进行赋值
count++; //去掉一位,计数器+1
}
while(n!=0); //当n被赋值为0时停止循环
return count;
}
二、逆序输出整数各位数字
用do-while循环语句,将整数n%10依次打印结果,再运用“去尾法”将n赋值为n/10,直到n被赋值为0时,循环结束。可以得到n的每一位数字。
源代码:
void PrintReverse(int n)
{
if(n<0)
{
printf("-");
n=-n;
} //当整数n小于0时,输出一个“-”号
do
{
printf("%d ",n%10); //输出整数的各位
n=n/10; //去尾法”,对n进行赋值
}while(n!=0); //当n被赋值为0时停止循环
printf("\n");
}
三、顺序输出整数各位数字
顺序输出整数的每一位。
例如5234 输出 5 2 3 4,当5234/1000=5,5234%1000=234;
234/100=2, 234%100=34;
... ...
由这个例子可以找出规律,整数n/(10的n的位数减一次方)的结果是n的最高位,再利用n%(10的n的位数减一次方)去掉n的最高位,进行循环,直到n被赋值为0时停止循环。
void PrintOrder(int n)
{
int tmp;
tmp = GetFigures(n); //调用GetFigures函数
int power=1;
if(n<0)
{
printf("-");
n=-n;
} //当整数n为负数时,输出一个“-”号
for(int i=0;i<tmp-1;i++)
{
power *= 10;
} //10的n的位数减一次方
do
{
printf("%d ",n/power); //打印最高位数
n = n%power; //去掉最高位
power /= 10; //一次循环结束,power/10
}
while(n!=0); //当n被赋值为0时停止循环
printf("\n");
}