统计十进制n的位数时,对n进行除运算。
#include<stdio.h>
//统计十进制n的位数int GetFigures1(int n)
{
int count = 0;//记录位数
do
{
count++;//对记录位数的变量进行加一操作
n/=10;//对n进行除运算
}while(n!=0);//循环条件
return count;
}
对于一个十进制的数,逆序输出时,需要对各位数字进行取得和丢弃。(逆序输出还可以 )
//逆序输出十进制数字n
void PrintReverse(int n){
if(n<0)//对负数的处理
{
printf("-");
n=-n;
}
do
{
printf("%d ",n%10);//利用取余的方式得到个位数值并输出
n/=10;//利用除运算将此个位丢弃。
}while(n!=0);
printf("\n");
}
顺序输出每一位时,需要对十进制数n进行高位的取得和丢弃。
//顺序输出十进制的每一位void PrintOrder(int n)
{
int count = GetFigures(n);//调用求位数的函数,保存n的位数的值
int power = 1;//用来做除和取余运算for(int i=0;i<count-1;i++)//计算10的位数减一次方的值
{
power *= 10;
}
do
{
printf("%d ",n/power);//利用除运算得高位
n%=power;//利用取余运算丢高位
power/=10;
}while(n!=0);
printf("\n");
}
int main()
{
printf("%d\n",GetFigures(1234));//测试用例
printf("%d\n",GetFigures(1));
printf("%d\n",GetFigures(-1));
printf("%d\n",GetFigures(0));
printf("%d\n",GetFigures(-1234));
PrintReverse(1234);
PrintReverse(1);
PrintReverse(-1);
PrintReverse(-1234);
PrintOrder(1234);
PrintOrder(-1);
PrintOrder(1);
PrintOrder(-1234);
return 0;
}
结果: