这一题,要注意的输入的一列数字很可能很长很长,所以要用字符串,我就吃了亏。
因为有可能不止一次重复相加,所以我用递归让它自己算了。还用了c++ string。
应该比较容易懂。
#include<iostream>
using namespace std;
int slove(int s)//递归
{
int x,final=0;
x=s;
if(x/10==0)//退出条件
return x;
else
{
while(x)
{
final+=x%10;
x/=10;
}
return slove(final);
}
}
int main()
{
string s;
while(cin>>s)
{
int sum=0;
if(s[0]=='0')
break;
for(int i=0;i<s.length();i++)
sum+=s[i]-'0';
cout<<slove(sum)<<endl;
}
return 0;
}