【问题标题】:Armstrong number in C [duplicate]C中的阿姆斯特朗数[重复]
【发布时间】:2021-07-10 13:32:44
【问题描述】:

我不明白为什么它总是什么都不输出;有人可以帮我吗?

#include<stdio.h>
#include<stdlib.h>

int main() {

  int i, num, sum;

  for (i = 100; i < 1000; i++)
  {
      sum = 0;
      for (num = i; num != 0; num /= 10)
      {
        sum += (i % 10) ^ 3;
      }
      if (sum == i)
        printf("%d ", i);
  }
  system("pause");
  return 0;
}

【问题讨论】:

    标签: c


    【解决方案1】:

    ^ 运算符在 C 中 不是 求幂 - 相反,它是按位 XOR(异或)运算符。

    要将数字提高到给定的幂,您需要调用pow 函数(但它适用于浮点数);或者,当幂为3时,只需执行两次连续的乘法即可。

    此外,在您的代码中,您应该在内部 for 循环中使用 num % 10not i % 10):

    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
    
        int i, num, sum;
    
        for (i = 100; i < 1000; i++) {
            sum = 0;
            for (num = i; num != 0; num /= 10) {
                int digit = num % 10;
                sum += digit * digit * digit;
            }
            if (sum == i)
                printf("%d ", i);
        }
        system("pause");
        return 0;
    }
    

    【讨论】:

    • 但是,我不确定带有0 数字的数字是否应该算作真正的阿姆斯壮数字。这是您可以澄清并添加到代码中的内容。
    • @AdrianMole 他们有。例如,407 是阿姆斯壮的数字。见A005188 in the OEIS。另见Narcissistic Numbers on Wolfram
    • @TomKarzes 谢谢。有趣的是,在许多列表中都以 371 作为示例,但很少提及 370。
    • @AdrianMole 我猜每当任何自恋数字以0 结尾时,您总是可以将0 更改为1 以产生一个新的自恋数字。
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2022-11-13
    • 2014-06-30
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多