----------------------------------------- start reading -------------------------------------------------
问题:任意输入一个整数,输出他的每一位数
1、 逆序输出
思路:
(1)余除,输出最低位数字
(2)整出,依次减少尾数
(3)先余除再整除以此为循环,则形成余尾数,甩尾数的模式,依次输出
代码
#include<stdio.h>
void PrintRevers(int n)
{
do
{
printf("%d\n",n%10);
n/=10;
}
while(n!=0);
}
int main()
{
PrintRevers(123456);
return 0;
}
注:若要用for循环,注意边界值0要提前判断!
2、顺序输出
思路:
例如,1234顺序输出每一位数
(1)1234余除1000,得到234,1234除以1000,得到1
(2) 以此方法可依次从输出最高位数字。每次除以得到最高位数,再余除除去最高位,得到剩下的数,以此为循环
(3)如何找到除数1000?按照前一篇博客统计位数,调用Count函数。
代码
int Count(int n)
{
int tmp=0;
do
{
n/=10;
tmp++;
}
while(n!=0);
return tmp;
}
void PrintOrder(int n)
{
int tmp=1;
for(int i=1;i<Count(n);i++)
{
tmp*=10;
}
do
{
printf("%d\n",n/tmp);
n%=tmp;
tmp/=10;
}
while(n!=0);
}
int main()
{
PrintOrder(123456);
return 0;
}
注:若要用for循环,注意边界值0要提前判断!
总结:
- 数字的输出采用整除与取余交替计算,要学会根据要求调整整出与取余的位置
- 循环条件都是n!=0,因此要考虑无法进入循环的数字0(do–while循环可以避免对边界数字的操作)
另外,顺序输出还可采用递归和数组的方法,下次继续写
-----------------------------------------------End-------------------------------------------------------