1、最简单的
怎么输出最每位数字?把要输出的位数变成最低位,对于十进制数,每个数%10取余后就是 最低位数字
比如,125的最低位为125%10=5
12的最低位为12%10=2
1的最低位为1%10=1
那怎么把要输出的位数变成最低位?从低位到高位,/10就前进一位
比如,125/10=12
12/10=1
1/10=0
连贯起来就是:
最低位5 125%10=5 输出
前进一位,最低位2 125/10=12
12%10=2 输出
前进一位,最低位1 12/10=1
1%10=1 输出
前进一位,最低位0 1/10=0
说明已经前进到最高位之后了,不用再输出。所以终止条件为/10=0
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n!=0) {
cout<<n%10<<" ";
n/=10;
}
return 0;
}
缺点:输出顺序是从最低位到最高位
2、递归
#include<iostream>
using namespace std;
int fun(int n)
{
if(n<10)
cout<<n<<" ";
else {
fun(n/10);
cout<<n%10<<" ";
}
}
int main()
{
int n;
cin>>n;
fun(n);
return 0;
}
执行顺序:n=125
f(125) f(12) f(1)
↓ ↗ ↓ ↗ ↓
125>10 ↗ 12>10 ↗ 1<10
↓ ↗ ↓ ↗ ↓
调用f(125/10) 调用f(12/10) 输出1
返回上一层执行剩下的语句 ↓
125%10 ← 12%10 ← 返回上一层执行剩下的语句
输出5 输出2