题目来源:hdu-1013
题意:正整数的数字根是通过求整数的整数而求出的。如果结果值是一个位数,
那么这个数字就是数字根。如果结果值包含两个或多个数字,则将这些
数字相加并重复该过程。只要需要获得一个数字,则继续进行此操作。
例如,考虑正整数24。加上2和4,得到的值是6。由于6是一个数字,6是24的
数字根。现在考虑正整数39。加3,9加12。由于12不是一位数字,所以必须重
复这个过程。添加1和2产量的3,一个单一的数字,39个数字的根源。
输入 输入文件将包含一个正整数列表,每行一个。输入的结束将用0的整数值表示
输出 对于输入中的每个整数,将其数字根输出到输出的单独一行上。
注意:此题最好应用到函数的知识,方便又直观。
代码:
#include<stdio.h>
int main()
{
char num[10000];
int sum,flag,i;
int root(int sum);
while(scanf("%s",&num)&&num[0]!='0')
{
sum=0;
flag=0;
for(i=0;num[i]!='\0';i++)
sum=num[i]-48+sum;
while(sum>=10)
{
sum=root(sum);
}
printf("%d\n",sum);
}
return 0;
}
int root(int sum)
{
int num[10000]={0};
int i,sum2=0;
for(i=0;sum>0;i++)
{
num[i]=sum%10;
sum=sum/10;
}
for(i=0;i<20;i++)
{
sum2=sum2+num[i];
}
return sum2;
}