一、输出整数的位数
运用“去尾法”获取整数n的位数。“去尾法”是将整数n/10后重新赋值给n,将n的小数部分去掉(利用整数除以整数)。
每进行一次赋值,计数器+1,直到整数n被赋值为0后,计数器停止计数,此时计数器的数字为整数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; }
二、逆序输出数字
运用整数n%10可以得到余数,然后运用“去尾法”将数字缩小10倍,直到n==0时,退出循环。
源代码:
void PrintReverse(int n) { if(n<0) //对负整数的处理,当整数n小于0时,输出一个“-”号 { printf("-"); n=-n; } do { printf("%d ",n%10); //输出整数的各位 n=n/10; //去尾法”,对n进行赋值 }while(n!=0); //当n被赋值为0时停止循环 printf("\n"); }
三、顺序输出数字
顺序输出数字需要从高位开始进行计数,所以就需要获得这个数字的位数,我们可以调用GetFigures(int n)函数。
最高位数字=(整数n)除以(权重),而权重就是10的位数-1次方。
再利用n%(10的n的位数减一次方)去掉n的最高位,如此进行循环,直到n==0时退出循环。
源代码:
void PrintOrder(int n) { int tmp; tmp = GetFigures(n); //调用GetFigures函数 int power=1; if(n<0) //当整数n为负数时,输出一个“-”号 { printf("-"); n=-n; } for(int i=0;i<tmp-1;i++) //权重:10的n的位数减一次方 { power *= 10; } do { printf("%d ",n/power); //打印最高位数 n = n%power; //去掉最高位 power /= 10; //一次循环结束,权重降低 }while(n!=0); //当n被赋值为0时停止循环 printf("\n"); }