跳到主要内容

C++ 编写显示两个区间内的阿姆斯特朗数的程序

要理解这个示例,你需要掌握以下 C++ 编程 主题的知识:

这个程序要求用户输入两个整数,并显示给定区间内的所有阿姆斯特朗数。

如果你不知道如何在编程中检查一个数字是否为阿姆斯特朗数,那么这个程序可能看起来有点复杂。

访问此页面了解关于 阿姆斯特朗数以及如何在 C++ 编程中检查它

示例:在区间内显示阿姆斯特朗数

#include <iostream>
#include <cmath>
using namespace std;

int main() {

int num1, num2, i, num, digit, sum, count;

cout << "Enter first number: ";
cin >> num1;

cout << "Enter second number: ";
cin >> num2;

// 如果 num1 > num2,则交换
if (num1 > num2) {
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
}

cout << "Armstrong numbers between " << num1 << " and " << num2 << " are: " << endl;

// 从 num1 到 num2 打印阿姆斯特朗数
for(i = num1; i <= num2; i++) {

// count 给出 i 中的位数
count = 0;

// 将 i 的值存储在 num 中
num = i;

// 计算 num 和 i 的位数
while(num > 0) {
++count;
num /= 10;
}

// 将 sum 初始化为 0
sum = 0;

// 再次将 i 的值存储在 num 中
num = i;

// 获取 i 的所有位数的幂之和
while(num > 0) {
digit = num % 10;
sum = sum + pow(digit, count);
num /= 10;
}

// 如果 sum 等于 i,则它是阿姆斯特朗数
if(sum == i) {
cout << i << ", ";
}
}

return 0;
}

```**输出**

```cpp
输入第一个数字:1
输入第二个数字:10000
110000 之间的阿姆斯特朗数是:
1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474,

这个程序打印出给定区间内的所有阿姆斯特朗数,区间的起始点和终点都是包含在内的。

首先,我们获取用户输入的 num1num2 来确定我们的区间。如果 num1 的值大于 num2,我们就交换这两个数

然后,我们使用 for 循环找到所有的阿姆斯特朗数:

for(i = num1; i <= num2; i++) {
// 代码打印阿姆斯特朗数
}

第 1 步:找出 i 中的位数

首先,我们需要计算区间内每个数字包含的位数。换句话说,我们需要计算 i 的位数。

所以,在循环中,i 的值被存储在变量 num 中。然后,我们使用 while 循环来计算 num 中的位数。

count = 0;
num = i;

// 计算 num 和 i 的位数
while(num > 0) {
++count;
num /= 10;
}

while 循环结束后,变量 count 会给出 i 中的位数。

第 2 步:找出每个数字的幂之和

我们知道阿姆斯特朗数是指每个数字的幂之和等于原始数字本身的数字。

所以,我们的下一步是找到这个和。与前一步类似,我们将 sum 变量初始化为 0 并将 i 的值赋给 num

sum = 0;
num = i;

然后,我们使用 while 循环来找出数字幂次的和,幂次是 count 变量的值。

while(num > 0) {
digit = num % 10;
sum = sum + pow(digit, count);
num /= 10;
}

注意,我们使用了 pow() 函数来计算数字的幂次(digit ^ count)。要使用这个函数,我们必须在程序中导入 cmath 头文件。

第 3 步:检查 sum 是否等于 i

最后,sum 与原始数字 i 进行比较。如果它们相等,这个数字就是阿姆斯特朗数,我们将其打印到屏幕上。

if(sum == i) {
cout << i << ", ";
}