看到这题就想到了大数, 用字符数组做。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <algorithm>
#define mem(a) memset(a, 0, sizeof(a))
using namespace std;
char ch1[1005];
int len1, num;
void digital()
{
int i, w = 0;
num = 0;
for(i = 0;i < len1;i++)
{
num += (ch1[i] - 48);
}
mem(ch1);
if(num < 10)
return;
else
{
while((num / 10) != 0)
{
ch1[w] = num % 10 + 48;
num /= 10;
w++;
}
ch1[w] = num + 48;
len1 = w + 1;
digital();
}
}
int main()
{
int i, j, k;
mem(ch1);
while(scanf("%s", &ch1))
{
len1 = strlen(ch1);
if(len1 == 1&&ch1[0] == '0')
break;
if(len1 == 1)
{
printf("%c\n", ch1[0]);
mem(ch1);
continue;
}
digital();
printf("%d\n", num);
mem(ch1);
}
return 0;
}