题意:
输入一个数字,将其各位数相加,小于10输出,在大于等于10,将所得的大于等于10的数,继续分解相加,直到小于10为止。
注意:
输入的数值会出现越界,所以要用字符串进行代替数值进行输入。
解决方案:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char str[1000];
int sum,i;
while(cin>>str)
{
//初始为0
sum=0;
//判断结束
if(str[0]=='0')
{
break;
}
//求出字符串所表示数值各位数的和
for(i=0;i<strlen(str);i++)
{
sum+=str[i]-'0';
}
//将sum每位数相加求出i,再i赋与sum,如果sum<10就输出,否则不断循环。
while(sum>=10)
{
i=0;
while(sum>0)
{
//i累加sum各位数的和
i+=sum%10;
//sum去除个位,将十位变成个位
sum/=10;
}
sum=i;
}
cout<<sum<<endl;
}
return 0;
}