HDU-1013的解题报告

题目来源: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;
}

posted @ 2018-04-20 22:44  里昂静  阅读(133)  评论(0编辑  收藏  举报