编辑这个页面须要登录或更高权限!

C程序查找两个间隔之间的阿姆斯壮数

C 语言编程实例大全

在此示例中,您将学习查找用户输入的两个整数之间的所有Armstrong数字。

要理解此示例,您应该了解以下C语言编程主题:

一个正整数称为阿姆斯特朗数(n阶),如果

abcd... = an + bn + cn + dn +

对于3位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。例如,153是Armstrong的数字,因为

153 = 1*1*1 + 5*5*5 + 3*3*3

在尝试该程序之前,请学习如何检查整数是否为Armstrong数字

两个整数之间的阿姆斯壮数

#include <math.h>
#include <stdio.h>
int main() {
   int low, high, number, originalNumber, rem, count = 0;
   double result = 0.0;
   printf("输入两个数字(间隔): ");
   scanf("%d %d", &low, &high);
   printf("%d和%d之间的阿姆斯壮数字为: ", low, high);


    //将数字从(low + 1)迭代到(high - 1)
    //在每次迭代中,检查数字是否为Armstrong
   for (number = low + 1; number < high; ++number) {
      originalNumber = number;

      //位数计算
      while (originalNumber != 0) {
         originalNumber /= 10;
         ++count;
      }

      originalNumber = number;

      //结果包含个位数的n次幂的和
      while (originalNumber != 0) {
         rem = originalNumber % 10;
         result += pow(rem, count);
         originalNumber /= 10;
      }

      //检查数字是否等于单个数字的n次幂之和
      if ((int)result == number) {
         printf("%d ", number);
      }

      //重置值
      count = 0;
      result = 0;
   }

   return 0;
}

输出结果

输入两个数字(间隔): 200
2000
200和2000之间的阿姆斯壮数字为: 370 371 407 1634

在程序中,外循环从(low + 1)迭代到(high-1)。在每次迭代中,都会检查number是否为Armstrong数。

在外循环内部,首先计算一个整数的位数,并将其存储在中count。并且,各个数字的幂之和存储在result变量中。

如果number等于result,则该数字为阿姆斯壮数字。

注意:您需要在外部循环的每次迭代中将count和result重置为0。

C 语言编程实例大全