【问题标题】:How to sum integers digits [closed]如何对整数数字求和[关闭]
【发布时间】:2015-02-26 10:48:50
【问题描述】:

这是我的任务:我想对 int 的数字求和,问题是我不知道有多少位(而且我无法询问用户)。 有没有类似 int 的 getchar 的东西?我也尝试过 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);
}

}

【问题讨论】:

  • 展示你的尝试
  • 有一个问题和过去差不多。
  • 0b 11111111 11111111 11111111 111111110xFFFF65535?请注意,所有表示都针对相同的值。
  • 您可以通过将模运算符与除法结合使用来解决此问题。 (即计算模 10 得到最后一位数字的值,然后将该数字除以 10,然后再模 10,等等)
  • @ashiaka 所说的。是时候进行一些递归了——让教授开心。

标签: c integer digits


【解决方案1】:

取任何int,比如n,并计算n%10(除以十的余数)和n/10(除以十的商)。余数正好是最后一位,商就是没有最后一位的数……循环,直到商为零,每一步求和。

【讨论】:

    【解决方案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);
    }
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 2020-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-19
        • 1970-01-01
        相关资源
        最近更新 更多