递归方式实现打印一个整数的每一位(c语言)(VS)(超详细)

代码目录

  • 前言
  • 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("%d\n", 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("%d\n", x % 10);
}
//主函数
int main()
{
	//定义数
	int number;
	//输入数值
	printf("输入数值:");
	scanf("%d",&number);
	//打印数每一位
	Print(number,JiWei(number));
	return 0;
}

如图:
递归方式实现打印一个整数的每一位(c语言)(VS)(超详细)_第1张图片

戳我返回目录


总结

这次代码还是非常简单的,相信大家很快就能学会,博主在这里求个赞。

递归方式实现打印一个整数的每一位(c语言)(VS)(超详细)_第2张图片

戳我返回目录

你可能感兴趣的:(C语言,c语言,开发语言)