C语言求输入一个非负整数,返回组成它的数字之和
方法一、递归法
思路:设计一个初始条件,通过递归获取非负整数的个位,不断接近递归条件即可。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> 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 <stdio.h> 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; }