问题描述
keyboard_arrow_down
编写一个程序,从键盘输入n个非零整数(0 < n <= 1000000000),对每个整数n进行如下处理:将整数的各位数字取出来相加,如果结果是一位数则输出该数,否则重复上述过程,直到得到的结果为一位数,并输出该结果。
输入说明
keyboard_arrow_down
多组数据,每行一个整数,输入为0时表示输入结束。
输出说明
keyboard_arrow_down
输出每个整数的处理结果,然后换行。
输入样例
keyboard_arrow_down
24
39
0
输出样例
keyboard_arrow_down
6
3
s使用c++的string类实现,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include<iostream> #include<string> using namespace std; int main() { while(true) { string n; getline(cin,n); if(n=="0") break; else { while(true) { int sum=0; for(int i=0; i<n.size(); i++) { sum+=n.at(i)-'0'; } if(sum<10) { cout<<sum<<endl; break; } else { char *s=new char[1000]; sprintf(s,"%d",sum); n=s; continue; delete []s; } } } } return 0; } |
发表回复