🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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。