- 前言
- 1.主函数
- 2.得几位函数
- 3.打印函数
- 4.完整代码及效果
- 总结
前言
大家好,我是博主:“星尘不会落”。
今天教大家:
递归方式实现打印一个整数的每一位。
戳我返回目录
1.主函数
我们先定一个主函数(头文件就一个
,就不浪费目录了)。
我们需要定义一个整形变量,用 scanf() 修改变量得到自己想要的数,然后再把数传入函数。
#include//主函数 int main() { //定义数 int number; //输入数值 printf("输入数值:"); scanf("%d",&number); //打印数每一位 Print(number,JiWei(number)); return 0; }
戳我返回目录
2.得几位函数
我们用一个思路,一个个位数 / 10,得到的就是 0 ,一个两位
数 / 100 ,得 0。以此类推,这么有规律,一看就能做到一个循环:
我们用变量x,代表数;
我们用变量 i = 10,i *= 10,代表每一次的除数;
用j = 1, i++,代表计次数,而计次数计多少次就是有多少位;
这里有个细节,我们要判定 x / i 等于零跳出,不如直接把,x / i 写入循环中,然后跳出直接返回 j 。
然后把这些再放进,可返回值的自定义函数中,就完美搞定了。
//循环得几位函数
int JiWei(int x)
{
int i,j;
//x/i==0会break
for (i = 10, j = 1; x / i; i *= 10, j++);
//打印数有几位
printf("它是%d位的。n", j);
//返回几位
return j;
}
戳我返回目录
3.打印函数
返回的值,也不需要先用变量储存,因为是小程序,直接传入即可。
我们用一个变量接收,我这里用的是变量jiwei。
变量x接收的是我们定义的数。
这里用到递归打印数的每一位,所以我们要先加入判定条件 if(jiwei) ,然后 jiwei 等于零时就退出递归,防止死循环,怎么让它等于 0 ?
当然是根据我们的需求,每次都要打印一个。
那我们就每次减一,然后我们递归的本身函数传参要用 ( x / 10,jiwei ) ,打印用 x%10,再加一点修饰就完美完成了。
//递归打印数的每一位函数
void Print(int x, int jiwei)
{
//条件判定数修改——防止死递归
jiwei--;
//递归
if (jiwei)
Print(x / 10, jiwei);
//打印数的每一位
printf("数的每%d位:", jiwei+1);
printf("%dn", x % 10);
}
戳我返回目录
4.完整代码及效果
#include//循环得几位函数 int JiWei(int x) { int i,j; //x/i==0会break for (i = 10, j = 1; x / i; i *= 10, j++); //打印数有几位 printf("它是%d位的。n", j); //返回几位 return j; } //递归打印数的每一位函数 void Print(int x, int jiwei) { //条件判定数修改——防止死递归 jiwei--; //递归 if (jiwei) Print(x / 10, jiwei); //打印数的每一位 printf("数的每%d位:", jiwei+1); printf("%dn", x % 10); } //主函数 int main() { //定义数 int number; //输入数值 printf("输入数值:"); scanf("%d",&number); //打印数每一位 Print(number,JiWei(number)); return 0; }
如图:
戳我返回目录
总结
这次代码还是非常简单的,相信大家很快就能学会,博主在这里求个赞。
戳我返回目录



