原题描述
Description
编写一个函数,计算一个整数的所有数字之和
#include “stdio.h”
int sum(int n)
{
_______________________
}
main()
{
int n;
scanf("%d", &n);
printf("%d", sum(n));
}
输入格式
由键盘输入一个整数
输出格式
输出该数各位数字之和
输入样例
123
输出样例
6
提示
1+2+3=6
题目分析
就是拆解数字嘛。注意这里不是字符型。可以从前往后拆解,当然也可以从后往前拆解。拆出来累加即可。
代码
#include <stdio.h>
int sum_conghouchai(int n)/*从后面拆解数字*/
{
int ret=0;
while(n>0)
{
ret+=n%10;
n/=10;
}
return ret;
}
int sum_congqianchai(int n)/*从前面拆解数字*/
{
int x,ans=0,y=1;
while(n/y/10) //获得与n相同级别的数字(10的几次方),循环终止条件是n/y的结果是一位数
y*=10;
do
{
x=n/y;
n%=y;
y/=10;
ans+=x;
}
while(y);
return ans;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", sum_congqianchai(n));
return 0;
}
可以看到,在绝大多数情况下,从后往前拆代码量是最少的(一个有两个语句的while循环就可以搞定)。但是,我觉得从前往后拆解也很重要,至少获得与n相同级别的数字也是需要掌握的。