1. 题目
打印一个数的每一位
2.分析
- 首先先实现非递归方式,
以123为例。我们要获取它的每一位,
获取个位数:123 %10 =3
获取十位数:123/10 =12 之后在 12%10 = 2;
获取百位数:12/10 =1 之后再1%10 = 1;
这个时候要考虑用循环,n%10这个是一直循环的,但是n的值是变的,n每次要/10,非递归方式就差不多成型了。 - 递归实现
拆分一下,分为两种情况
(1)n<9 直接打印n%10
(2)n>9 调用本身,让n/10
3.代码
//实现打印一个数的每一位#include<stdio.h>
//非递归
void DigitSum(int n)
{while (n){printf("%d ", n % 10);n = n / 10;}
}
//递归
void DigitSum2(int n)
{if (n > 9){DigitSum2( n / 10);}printf("%d ", n % 10);}int main()
{int num = 123;//scanf("%d", &num);DigitSum(num);printf("\n");DigitSum2(num);return 0;
}