用C语言编程求一个整数各个数的和的问题

main()
{
int n,sum=0;
printf("请输入任意一个整数:");
scanf("%d",&n);
while(n!=0)
{
sum+=n%10;
n=n/10;
}
printf("其各个位数之和为%d\n",sum);

关键的地方不是很明白,就是这个:
sum+=n%10;
n=n/10;
假如说输入的数是145, 那么经过n=n/10之后就是14.5,然后sum=0+145%10,应该是45。不明白是怎么把各个数求和的,望指点

sum+=n%10;这句的意思就是取当前n的最后一位,这句语句的意思是n除以10的余数,也就是个位
n=n/10;这句的意思就是去除最后一位,这句语句的意思是将n的值除以10赋值给n,原来的话应该n的值就是14.5了,但是因为n的变量类型是整形,所以结果会自动进行数据类型转换,所以n的值就是14.5舍弃小数点以后的那个14
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-20
# include <stdio.h>
void main()
{ int i,m,sum=0;
int x;
printf("输入一个整型数:");
scanf("%d",&m);
printf("%d",m);
do
{x=m%10;
sum=sum+x;
m=m/10;
}while(m!=0);
printf("各位数之和是:%d",sum);
}
第2个回答  2010-11-20
%是取余的,同时INT是整形,也就是每次只把最低位相加。
第3个回答  2010-11-20
%是求余,/是求除的整数,n=n/10是14,sum=0+145%10,应该是5,
第4个回答  2010-11-20
% 是求余 145%10=5 就是145/10 余 5
n 整形 n=145/10=14
第5个回答  2010-11-20
sum+=n%10这个是求余,n=n/10这个是求商,因为n和sum都是int型,所以没有小数位