Description :
给定一个非负整数N,反复将各个位上的数字相加,直到结果为一位数。
例如N = 38:
3+8 = 11
1+1
Input :
输入一个非负32位有符号整数N
Output:
输出符合要求的一个数
代码:
#include <stdlib.h>
int main()
{
int n;scanf("%d",&n);
int x,y,sum;
x=n;
while(x/10!=0)
{
n=x;
sum=0;
while(n)
{
y=n%10;
sum+=y;
n/=10;
}
x=sum;
}
printf("%d",sum);
return 0;
}
/*思路:
1、定义数n,x,y,sum,使x=n,便于计算,y用于表示每次个位数的数值,sum用于求个位数字之和
2、要能反复将n的各个位上的数相加,前提:n不是个位数
3、始末数据不明,采用while嵌套循环来实现各个位数的加法,条件:x/10!=0,使n>=10
4、个位数y=n%10,加到sum里,再去掉n的个位数(比如从38变成3,此时n=3,y=3,sum=8+3=11,n/10即3/10=0,n==0时退出内循环
5、再次进入外循环x=sum=11,令sum=0,又将x赋值给n,n=11进入内循环
6、每一次得到各个位数之前都要将sum重置为0,重新进行加法
7、直到得到个位数时输出sum
*/