需要拆分整数并将其与自身相加

时间:2011-02-21 16:59:15

标签: c

所以,我的基本问题是我正在尝试为我正在努力的小项目编写一个程序。

基本上,我的问题是:我需要接受用户输入,作为int,比如说15,然后操纵数字,使其返回1 + 5的结果,为6.或者换句话说,数字是29,将给你2 + 9 = 11,然后需要再次减少到1 + 1 = 2.这可能很容易处理,但我坚持如何实际拆分int而不必逐一取数字。我想RegEx是可能的,但我一直在寻找一种更有效的方法。

4 个答案:

答案 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.