当前位置:首页 C++ > 正文

使用C++输出水仙花数,详细解答

作者:野牛程序员:2023-06-20 17:23:04 C++阅读 3022

当一个n位数等于它的每个位上的数字的n次幂之和时,我们称其为水仙花数。例如,153是一个水仙花数,因为1³ + 5³ + 3³ = 153。

下面是使用C++编写的输出水仙花数的示例代码:

#include <iostream>
#include <cmath>

bool isArmstrongNumber(int number) {
    int originalNumber = number;
    int numDigits = 0;
    int sum = 0;

    // 计算数字的位数
    while (originalNumber != 0) {
        originalNumber /= 10;
        numDigits++;
    }

    // 计算每个位上的数字的n次幂之和
    originalNumber = number;
    while (originalNumber != 0) {
        int digit = originalNumber % 10;
        sum += pow(digit, numDigits);
        originalNumber /= 10;
    }

    // 检查是否是水仙花数
    return (sum == number);
}

int main() {
    int start, end;

    std::cout << "请输入要查找的范围的起始数: ";
    std::cin >> start;

    std::cout << "请输入要查找的范围的结束数: ";
    std::cin >> end;

    std::cout << "水仙花数列表: ";

    for (int number = start; number <= end; ++number) {
        if (isArmstrongNumber(number)) {
            std::cout << number << " ";
        }
    }

    std::cout << std::endl;

    return 0;
}

这段代码首先定义了一个名为isArmstrongNumber的函数,用于检查一个数字是否是水仙花数。该函数接受一个整数作为输入,并返回一个布尔值,指示该数字是否是水仙花数。在该函数中,我们使用循环计算了输入数字的位数,并计算了每个位上的数字的n次幂之和。最后,我们将这个和与原始数字进行比较,如果它们相等,则该数字是水仙花数。

main函数中,我们首先获取用户输入的要查找的范围的起始数和结束数。然后,我们使用一个循环遍历该范围内的每个数字,并调用isArmstrongNumber函数来检查每个数字是否是水仙花数。如果是水仙花数,我们就将其输出到屏幕上。

请注意,该代码假定用户输入的起始数小于或等于结束数,并且输入的数字都是正整数。此外,代码中使用了C++标准库中的cmath头文件中的pow函数来进行幂运算。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击