标题 数字处理 类别 函数与递归 时间限制 2S 内存限制 1000Kb 问题描述 编写一个程序,从键盘输入一个非零整数n(0 < n <= 1000000000),对整数n进行如下处理: 将整数的各位数字取出来相加,如果结果是一位数则输出该数,否则重复上述过程,直到得到的结果为一位数,并输出该结果。 例如:n=456,变换过程如下 4+5+6=15 1+5=6 输出结果为6 输入说明 一个非零整数n。 输出说明 输出整数n的处理结果。 输入样例 456 输出样例 6
#include <stdio.h>
int function(int n)
{
int y, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10;
d1 = n % 10;
d2 = n / 10 % 10;
d3 = n / 100 % 10;
d4 = n / 1000 % 10;
d5 = n / 10000 % 10;
d6 = n / 100000 % 10;
d7 = n / 1000000 % 10;
d8 = n / 10000000 % 10;
d9 = n / 100000000 % 10;
d10 = n / 1000000000 % 10;
y = d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10;
return (y);
}
int main()
{
int n, y;
scanf("%d", &n);
y = function(n);
while (y > 10)
{
y = function(n);
n = y;
}
printf("%d", y);
return 0;
}