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;
}

1382

被折叠的 条评论
为什么被折叠?



