如何求和整数数字

时间:2015-02-26 10:48:51

标签: c integer digits

这是我的任务:我想总结一个int的数字,问题是我不知道有多少位数(我不能问用户)。 有什么像getchar for int?我也试过int c = getchar(),但它不起作用。 感谢:)

我希望它是一个递归函数,但我想这是错误的。

我认为我得到了它,谢谢大家!

int sum_digits (int n) {
int answer = 0;
if (getchar() == 0) {
    return answer;
}
else {
    int c = getchar();
    return answer = c + sum_digits(n);
}

}

3 个答案:

答案 0 :(得分:2)

取任意int,说n,然后计算n%10(除法的余数除以10)和n/10(除法除以10的商)。余数恰好是最后一位数,而商数是没有最后一位数的数字......循环,直到商为零并在每一步中求和。

答案 1 :(得分:2)

尝试以下程序。

int sum_digits (unsigned int n)
{
    int sum = 0;
    while (n > 0) {
        sum += (n % 10);
        n /= 10;
    }
    return sum;
}

编辑:递归函数:

int sum_digits (unsigned int n)
{
    if (n < 10)
        return n % 10;
    return (n % 10) + sum_digits(n / 10);
}

答案 2 :(得分:1)

对于高尔夫,这是一种递归方法:

unsigned int countDigits(unsigned int x)
{
  if (x < 10)
    return 1;
  return 1 + countDigits(x / 10);
}