目录
解题思路:
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
- 例如,调用DigitSum(1865),则应该返回1+8+6+5,它的和是20.
- 根据题目要求:非负整数,则需要选择语句判断用户输入的数字是一个正数;
- 根据题意,需要根据输入的数字大小求出每一个数位上的数字,进而进行相加;
代码示例:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int DigitSum(int n){
if (n < 9)
return n;
else
return n % 10 + DigitSum(n / 10);
/*这段递归代码可写成非递归形式:
while(n>0){
r=n%10;求模可分离最低位数字
s=s+r;
n=n/10;做除可得到下一位数位为最低位
}
printf("%d",n);
*/
}
int main(){
int num = 0;
printf("输入你要计算的数字: \n");
scanf("%d", &num);
DigitSum(num);
printf("各数位上的数字相加和为%d\n", DigitSum(num));
system("pause");
return 0;
}
运行结果:
啾咪~~~~~
分别打印出每一位的数字:
代码示例:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int DigitSum(int n){
if (n < 10) {
printf("%4d\n", n);
return n;
}
else {
printf("%4d\n", n%10);
return n % 10 + DigitSum(n / 10);
}
}
int main(){
int num = 0;
printf("输入你要计算的数字: \n");
scanf("%d", &num);
printf("各数位上的数字相加和为%d\n", DigitSum(num));
system("pause");
return 0;
}
运行结果:
啾咪~~~