🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C++ 程序:检查阿姆斯特朗数 > 原文: [https://www.programiz.com/cpp-programming/examples/check-armstrong-number](https://www.programiz.com/cpp-programming/examples/check-armstrong-number) #### 在此示例中,您将学习检查用户输入的号码是否是阿姆斯特朗数。 要理解此示例,您应该了解以下 [C++ 编程](/cpp-programming "C++ tutorial")主题: * [C++ `if`,`if...else`和嵌套`if...else`](/cpp-programming/if-else) * [C++ `while`和`do...while`循环](/cpp-programming/do-while-loop) * * * 一个正整数称为阿姆斯特朗数(n 阶),如果 ```cpp abcd... = an + bn + cn + dn + ``` 对于 3 位的阿姆斯特朗数,每个数位的立方和等于该数字本身。 例如,153 是阿姆斯特朗数,因为 ```cpp 153 = 1*1*1 + 5*5*5 + 3*3*3 ``` * * * ## 示例:检查 3 位阿姆斯特朗数 ```cpp #include <iostream> using namespace std; int main() { int num, originalNum, remainder, result = 0; cout << "Enter a three-digit integer: "; cin >> num; originalNum = num; while (originalNum != 0) { // remainder contains the last digit remainder = originalNum % 10; result += remainder * remainder * remainder; // removing last digit from the orignal number originalNum /= 10; } if (result == num) cout << num << " is an Armstrong number."; else cout << num << " is not an Armstrong number."; return 0; } ``` **输出** ```cpp Enter a positive integer: 371 371 is an Armstrong number. ``` 在程序中,我们遍历`while`循环,直到`originalNum`为 0。 在循环的每次迭代中,将`orignalNum`的最后一位数字的立方添加到`result`中。 ```cpp remainder = originalNum % 10; result += remainder * remainder * remainder; ``` 并且,最后一位从`orignalNum`中删除。 循环结束时,单个数字的立方的总和存储在`result`中。 * * * ## 示例:检查 n 位阿姆斯特朗数 ```cpp #include <cmath> #include <iostream> using namespace std; int main() { int num, originalNum, remainder, n = 0, result = 0, power; printf("Enter an integer: "); scanf("%d", &num); originalNum = num; while (originalNum != 0) { originalNum /= 10; ++n; } originalNum = num; while (originalNum != 0) { remainder = originalNum % 10; // pow() returns a double value // round() returns the equivalent int power = round(pow(remainder, n)); result += power; originalNum /= 10; } if (result == num) cout << num << " is an Armstrong number."; else cout << num << " is not an Armstrong number."; return 0; } ``` **输出** ```cpp Enter an integer: 1634 1634 is an Armstrong number. ``` 在该程序中,首先计算输入数字的位数,并将其存储在`n`中。 并且,`pow()`函数计算`while`循环的每次迭代中各个数字的幂。