以下是用 C++ 语言判断一个整数是否是水仙花数的示例代码:

#include <iostream>
#include <cmath>

bool isArmstrongNumber(int number) {
    int temp = number;
    int sum = 0;
    int digits = 0;

    // 计算数字位数
    while (temp != 0) {
        temp /= 10;
        digits++;
    }

    temp = number;

    // 计算各个位的立方和
    while (temp != 0) {
        int remainder = temp % 10;
        sum += pow(remainder, digits);
        temp /= 10;
    }

    // 判断是否为水仙花数
    if (sum == number) {
        return true;
    } else {
        return false;
    }
}

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;
}

代码解析:

  1. isArmstrongNumber 函数:

    • 接收一个整数 number 作为参数。
    • 使用 temp 变量保存 number 的值,并使用 digits 变量记录数字的位数。
    • 使用循环计算数字的位数,并将 temp 除以 10 直到 temp 等于 0。
    • 再次使用循环计算各个位的立方和,将每个数字取余 10,然后计算其 digits 次方并累加到 sum 中。
    • 最后判断 sum 是否等于 number,如果是则返回 true,表示是水仙花数;否则返回 false
  2. main 函数:

    • 从用户输入中获取一个整数。
    • 调用 isArmstrongNumber 函数判断该整数是否是水仙花数。
    • 根据函数返回值输出相应的结果。

优化建议:

  • 可以将 isArmstrongNumber 函数改写为更简洁的形式,例如使用三目运算符:
bool isArmstrongNumber(int number) {
    // ...
    return sum == number;
}
  • 可以对输入进行验证,例如判断输入是否为正整数。

希望以上内容对你有所帮助。如果你有任何其他问题,请随时提出。

C++ 判断水仙花数:代码示例和解析

原文地址: https://www.cveoy.top/t/topic/bcAK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录