正文

stu(1021)Z2005-08-30 20:12:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/4268.html

分享到:

这题是汕头大学的1021道题:答案是:
#include<stdio.h>
#include<stdlib.h>

int change()
{ char x;
  int sum=0;
  scanf("%c",&x);
  if(x!='0')
  { do
  { sum=sum+x-48;
    scanf("%c",&x);
  }while(x>=48);
  }
  else
    return(0);
  return(sum);
}

int root(long x)
{ int sum=0;
  while(x>9)
  { sum=sum+x%10;
    x=x/10;
  }
  return(sum+x);
}

int main()
{ int x;
  x=change();
  while(x)
  {
    do
    { x=root(x);
    }while(x>9);
    printf("%d\n",x);
    x=change();
  }
}
分析:1这题的思路很简单,就是把数相加,一般来说第一次加完都是只剩下两位数的了,但是那些试验
       的数据有点BT,所以呢?在main语句最后一句时在调用一次change函数。
      2change函数的作用就是实现把读进来的数进行相加,为了避免读入的数过大,还是使用了读字符
       的方法,然后通过减掉48来变成它相应的整数。
      3root函数的作用其实很明显了,应为经过第一次相加以后,剩下的一般来说都是两位数了,应此
       root的作用就是实现两位数的十位和个位的相加。
       4为了避免读入的数过大,在最后一句添加了,令一个change函数。

阅读(2856) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册