1013:Digital Roots

注意:大数要用字符串表示!

sprintf:字符串格式化命令

主要功能:将格式化的数据写入某个字符串缓冲区

头文件:<stdio.h>

原型

int sprintf( char *buffer, const char *format, [ argument] … );

参数列表

bufferchar型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]...:可选参数,可以是任何类型的数据。
 

返回值

返回写入buffer 的字符数,出错则返回-1. 如果 buffer 或 format 是空指针,且不出错而继续,函数将返回-1,并且 errno 会被设置为 EINVAL。
sprintf 返回被写入buffer 的字节数,结束字符‘’不计入内。即,如果“Hello”被写入空间足够大的buffer后,函数sprintf 返回5。

 

代码实现:

 1 #include <iostream>
 2 #include <string>
 3 #include <stdio.h>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     /*注意:大数要用字符串表示*/
 9     string str;
10     while(cin>>str && str != "0")
11     {
12         while(str.length()>1)
13         {
14             int sum = 0;
15             for(int i = 0;i<str.length();i++)
16             {
17                 switch(str[i])
18                 {
19                 case '0':
20                     sum += 0; break;
21                 case '1':
22                     sum += 1; break;
23                 case '2':
24                     sum += 2; break;
25                 case '3':
26                     sum += 3; break;
27                 case '4':
28                     sum += 4; break;
29                 case '5':
30                     sum += 5; break;
31                 case '6':
32                     sum += 6; break;
33                 case '7':
34                     sum += 7; break;
35                 case '8':
36                     sum += 8; break;
37                 case '9':
38                     sum += 9; break;
39                 }
40             }
41             char b[10];
42             sprintf(b,"%d",sum);
43             str = b;
44         }
45         cout<<str<<endl;
46     }
47     /*超时
48     while(1)
49     {
50         int x;
51         cin>>x;
52         int y = x;
53         int s = 0;
54         if(x==0) break;
55         else
56         {
57              while(y>9)
58             {
59                 s += y%10;
60                 y = y/10;
61                 if(y<10)
62                 {
63                     s += y;
64                     if(s>9)
65                     {
66                         y = s;
67                         s = 0;
68                     }
69                     else
70                     {
71                         cout<<s<<endl;
72                     }
73                 }
74             }
75         }
76     }
77     */
78     return 0;
79 }
原文地址:https://www.cnblogs.com/ttzm/p/6077622.html