[关闭]
@songpfei 2016-04-19T02:00:54.000000Z 字数 418 阅读 670

数字基root

OJ_算法


描述:
求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复;

题目类别: 数组
难度: 初级
运行时间限制: 10Sec
内存限制: 128MByte
阶段: 入职前练习
输入:
输入任意一个或多个整数

输出:
输出各位数字之和,直到和为个位数为止(输入异常,则返回-1)

多行,每行对应一个输入数据的结果。

样例输入:
25
865

样例输出:
7
1

  1. #include<stdio.h>
  2. int NumberRoot(int n)
  3. {
  4. if (n <= 0)
  5. return -1;
  6. else if (n < 10)
  7. return n;
  8. else
  9. {
  10. int root = 0;
  11. while (n)
  12. {
  13. root += n % 10;
  14. n = n / 10;
  15. if (n == 0 && root > 9)
  16. {
  17. n = root;
  18. root = 0;
  19. }
  20. }
  21. return root;
  22. }
  23. }
  24. int main()
  25. {
  26. int n;
  27. while (scanf("%d", &n) == 1)
  28. {
  29. printf("%d\n", NumberRoot(n));
  30. }
  31. return 0;
  32. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注