Armstrong number(阿姆斯特朗数)是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个 3 位的阿姆斯特朗数,因为 1^3 + 5^3 + 3^3 = 153。
在 C++ 中编写一个程序来判断一个数是否为阿姆斯特朗数,但无法打印正确的输出可能是由于程序中存在错误。以下是一个修复该问题的示例程序:
#include <iostream>
#include <cmath>
bool isArmstrongNumber(int number) {
int originalNumber = number;
int numDigits = 0;
int sum = 0;
// 计算数字的位数
while (number != 0) {
number /= 10;
numDigits++;
}
// 计算每个位上数字的 n 次幂之和
number = originalNumber;
while (number != 0) {
int digit = number % 10;
sum += pow(digit, numDigits);
number /= 10;
}
// 判断是否为阿姆斯特朗数
return sum == originalNumber;
}
int main() {
int number;
std::cout << "请输入一个整数:";
std::cin >> number;
if (isArmstrongNumber(number)) {
std::cout << number << " 是一个阿姆斯特朗数。" << std::endl;
} else {
std::cout << number << " 不是一个阿姆斯特朗数。" << std::endl;
}
return 0;
}
这个程序首先定义了一个函数 isArmstrongNumber
,用于判断一个数是否为阿姆斯特朗数。然后在 main
函数中获取用户输入的整数,并调用 isArmstrongNumber
函数进行判断,并输出结果。
修复程序的关键是在计算每个位上数字的 n 次幂之和时,使用了 pow
函数来计算幂次。pow
函数需要包含 <cmath>
头文件。
这个程序可以正确地判断一个数是否为阿姆斯特朗数,并输出相应的结果。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云