所以,我的基本问题是我正在尝试为我正在努力的小项目编写一个程序。
基本上,我的问题是:我需要接受用户输入,作为int,比如说15,然后操纵数字,使其返回1 + 5的结果,为6.或者换句话说,数字是29,将给你2 + 9 = 11,然后需要再次减少到1 + 1 = 2.这可能很容易处理,但我坚持如何实际拆分int而不必逐一取数字。我想RegEx是可能的,但我一直在寻找一种更有效的方法。
答案 0 :(得分:4)
对于正则表达式来说,这不是一个特别好的工作。通常的方法是将除以10后的个别数字作为余数。
答案 1 :(得分:2)
示例代码在这里:
int sum_of_digits(int n)
{
if(n < 10)
{
return n;
}
int sum = 0;
while( n > 0)
{
sum += n % 10;
n /= 10;
}
return sum_of_digits(sum);
}
int main()
{
int n1 = sum_of_digits(29);
int n2 = sum_of_digits(15);
}
答案 2 :(得分:0)
在 C 中,这可以实现两位数的技巧:
digit_sum = my_int%10 + my_int/10
答案 3 :(得分:0)
我认为最快的方法是使用/
(除)和%
(模数)运算符来遍历整数。
int base = 15;
int acum = 0;
while (base > 0) {
acum = acum + (base % 10);
base = base / 10;
};
// At this point, base = 0 and acum = 6
// if acum > 10, then assign it to base and start again.