21xrx.com
2025-04-28 10:25:45 Monday
文章检索 我的文章 写文章
C++实现水仙花数的代码
2023-07-05 06:51:50 深夜i     18     0
C++ 水仙花数 代码

水仙花数,指一个三位数,其各个位上数字的立方和等于该数本身。例如,153是一个水仙花数,因为1^3+5^3+3^3=153。作为编程初学者来说,C++实现该功能代码是一项简单而重要的练习。

下面,我们来看一下如何用C++实现水仙花数的代码。

首先,我们需要定义一个函数来判断一个数字是否为水仙花数。该函数的形参为一个整数,返回值为一个布尔值。代码如下:

bool narcissistic(int num) {

  int sum = 0; // 定义立方和初始值为0

  int temp = num; // 将输入参数num保存在一个临时变量temp中

  while (temp > 0) {

    int digit = temp % 10; // 取出temp的个位数

    sum += digit * digit * digit; // 加上该位立方的结果

    temp /= 10; // temp除以10,丢掉个位数

  }

  return sum == num; // 返回sum是否等于原数num

}

以上代码的实现方法是:首先将输入的数保存在一个临时变量中,然后用while循环取出该数的各个位数,计算出每个位上数字的立方和,最后返回该数是否等于该数字的立方和。

接下来,我们需要在主函数中调用该函数并输出结果。主函数代码如下:

int main() {

  for (int i = 100; i <= 999; i++) {

    if (narcissistic(i))

      cout << i << "是水仙花数" << endl;

  }

  return 0;

}

以上代码的实现方法是:使用for循环来遍历所有三位数,如果该数是水仙花数,则输出该数是水仙花数。

现在,我们用一个完整的C++代码来展示如何实现水仙花数的功能:

#include <iostream>
using namespace std;
bool narcissistic(int num) {
  int sum = 0; // 定义立方和初始值为0
  int temp = num; // 将输入参数num保存在一个临时变量temp中
  while (temp > 0) {
    int digit = temp % 10; // 取出temp的个位数
    sum += digit * digit * digit; // 加上该位立方的结果
    temp /= 10; // temp除以10,丢掉个位数
  }
  return sum == num; // 返回sum是否等于原数num
}
int main() {
  for (int i = 100; i <= 999; i++) {
    if (narcissistic(i))
      cout << i << "是水仙花数" << endl;
    
  }
  return 0;
}

通过上述代码的实现,我们成功地用C++实现了水仙花数的功能,不仅加深了对数学知识的理解,还锻炼了编程能力,是一项非常有意义的练习。

  
  

评论区

请求出错了