# C 程序：在两个间隔之间显示阿姆斯特朗数

> 原文： [https://www.programiz.com/c-programming/examples/armstrong-number-interval](https://www.programiz.com/c-programming/examples/armstrong-number-interval)

#### 在此示例中，您将学习查找用户输入的两个整数之间的所有阿姆斯特朗数。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C `if...else`语句](/c-programming/c-if-else-statement)
*   [C `for`循环](/c-programming/c-for-loop)

* * *

一个正整数称为阿姆斯特朗数（`n`的阶数），如果

```c
abcd... = a<sup>n</sup> + b<sup>n</sup> + c<sup>n</sup> + d<sup>n</sup> + 
```

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

```c
153 = 1*1*1 + 5*5*5 + 3*3*3

```

在尝试该程序之前，请学习如何[检查整数是否为阿姆斯特朗数](https://www.programiz.com/c-programming/examples/check-armstrong-number)。

* * *

## 两个整数之间的阿姆斯特朗数

```c
#include <math.h>
#include <stdio.h>
int main() {
   int low, high, number, originalNumber, rem, count = 0;
   double result = 0.0;
   printf("Enter two numbers(intervals): ");
   scanf("%d %d", &low, &high);
   printf("Armstrong numbers between %d and %d are: ", low, high);

   // iterate number from (low + 1) to (high - 1)
   // In each iteration, check if number is Armstrong
   for (number = low + 1; number < high; ++number) {
      originalNumber = number;

      // number of digits calculation
      while (originalNumber != 0) {
         originalNumber /= 10;
         ++count;
      }

      originalNumber = number;

      // result contains sum of nth power of individual digits
      while (originalNumber != 0) {
         rem = originalNumber % 10;
         result += pow(rem, count);
         originalNumber /= 10;
      }

      // check if number is equal to the sum of nth power of individual digits
      if ((int)result == number) {
         printf("%d ", number);
      }

      // resetting the values
      count = 0;
      result = 0;
   }

   return 0;
}
```

**输出**

```c
Enter an integer: 1634
1634 is an Armstrong number. 
```

在程序中，外循环从（`low + 1`）**迭代到**（`high - 1`）。 在每次迭代中，都会检查`number`是否是阿姆斯特朗数。

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

如果`number`等于`result`，则该编号是阿姆斯特朗数。

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