C语言第二十八弹--输入一个非负整数,返回组成它的数字之和

C语言求输入一个非负整数,返回组成它的数字之和

方法一、递归法

思路:设计一个初始条件,通过递归获取非负整数的个位,不断接近递归条件即可。

#define _CRT_SECURE_NO_WARNINGS
#include 

int DigitSum(int n)
{
	int tmp = 0;
	if (n > 9)
	{
		tmp = n % 10;//获取每次的个位
		return tmp + DigitSum(n / 10);//和是每次个位相加
	}
	else if(n  == 0 )//是初始条件也是结束条件,使用n == 0 是因为递归中使用的是n / 10
	{
		return 0;
	}
}

int main()
{
	int  n = 0;
	scanf("%d",&n);
	int ret = DigitSum(n);
	printf("%d",ret);
	return 0;
}

非递归法

思路:通过循环设计好结束条件不断获得个位,并使用一个临时值接收。最后返回临时值即可。

#define _CRT_SECURE_NO_WARNINGS
#include 

int DigitSum(int n)
{
	int tmp = 0;
	while (n)//1927 172 17 
	{
		//获取个位 后面获取个位直接+=即可
		tmp += n % 10;
		n /= 10;
	}
	return tmp;
}

int main()
{
	int  n = 0;
	scanf("%d",&n);
	int ret = DigitSum(n);
	printf("%d",ret);
	return 0;
}

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