问题标题: 酷町堂:1802 数字各位求和

0
0
已解决
毕小曼
毕小曼
初级光能
初级光能

http://judge.codingtang.com/problem/1802/

题目描述 Description

对于一个正整数n,将它的各个数位上的数字相加得到一个新数,如果这个数是一位数,我们就输出这个数字和,否则重复处理直到它成为一个一位数。 例如,n=34,3+4=7,7是一位数,所以输出7。 再如,n=345,3+4+5=12,1+2=3,3是一位数,所以输出3。 对于输入数字n,编程计算它的各位数字之和。

输入描述 Input Description

输入一个正整数n(1<=n<=100000)

输出描述 Output Description

输出一个经过多次各位数字求和以后的一位数

样例输入 Sample Input

345

样例输出 Sample Output

3

帮个忙,谢谢

回答者赏三十酷町豆!!!!!!

再恳求帮个忙(麻烦讲解一下)


0
已采纳
李祈乐
李祈乐
新手光能
新手光能

输入n,当它还不是0时,求出他的每一位,然后算出他的位数和,即:

while(n!=0)
    {
        ans+=n%10;
        n/=10;
    }
//ans一开始为0

当ans还不是个一位数时,就把ans赋值给n,重复上面的过程,使用双重while循环,直到ans小于10,就输出ans,即:

 while(ans>=10)
    {
        n=ans;
        ans=0;
//然后重复上面的过程,注意:ans赋值给n,ans要重新求n各位的和,须清0

 

0
夏天
夏天
中级守护
中级守护


    while(n>=10) {
  int a=n,s=0;
  while(a!=0){
   s+=a%10;
   a/=10;
  }
  n=s;
 }
 cout<< n;

0
王梓澳
王梓澳
中级光能
中级光能

递归法

函数:

int csh(int n)
{
    if (n==0)
        return h;
    h+=n%10;
    return csh(n/=10);
}

main里:

    int n;
    cin>>n;
    cout<<csh(n);
    return 0;

注意:h的初始值为0,不然是乱码!

0
我要回答