21xrx.com
2024-12-27 13:48:31 Friday
登录
文章检索 我的文章 写文章
水仙花数C++代码详解
2023-06-30 00:15:22 深夜i     --     --
水仙花数 C++代码 详解

水仙花数也称为自恋数或阿姆斯特朗数,是指一个n位数(n≥3)每个位上数字的n次幂之和恰好等于它本身。例如:153=1^3+5^3+3^3,370=3^3+7^3+0^3,371=3^3+7^3+1^3。下面是一段详细介绍水仙花数的C++代码解析。

(1)引入头文件和命名空间

在代码开头,应该先引入头文件和命名空间,可以使用“using namespace std;”来简化代码,避免后续编程引起的冲突。

#include

using namespace std;

(2)函数定义

定义一个函数,判断该数是否是水仙花数,该函数需要接收一个整形参数,函数返回值为bool型。

bool narcissistic_number(int n)

(3)变量定义

在函数内部,定义一个整型变量,用来暂时存储输入的数,后续对该变量的操作不会影响输入值的原始状态。

int num=n;

(4)位数计算

计算该数的位数,将值赋给另一个整型变量,以备后续计算使用。

int digit=0;

while(num>0)

{

  num=num/10;

  digit++;

}

(5)位数分离

将输入值的每一位分离出来,放进一个数组里,以备后续计算使用。

int arr[100];

int temp=n;

for(int i=digit-1;i>=0;i--)

{

  arr[i]=temp%10;

  temp=temp/10;

}

(6)计算总和

根据水仙花数的定义,计算每一位的n次方,并将计算结果累加起来,放进一个整型变量里。

int sum=0;

for(int i=0;i

{

  int pow=1;

  for(int j=0;j

  {

    pow*=arr[i];

  }

  sum+=pow;

}

(7)判断

将计算得到的总和与输入值进行比较,如果相等,则说明该数是水仙花数,返回true;否则,返回false。

if(n==sum)

  return true;

else

  return false;

(8)完整代码

#include

using namespace std;

bool narcissistic_number(int n)

{

  int num=n;

  int digit=0;

  while(num>0)

  {

    num=num/10;

    digit++;

  }

  int arr[100];

  int temp=n;

  for(int i=digit-1;i>=0;i--)

  {

    arr[i]=temp%10;

    temp=temp/10;

  }

  int sum=0;

  for(int i=0;i

  {

    int pow=1;

    for(int j=0;j

    {

      pow*=arr[i];

    }

    sum+=pow;

  }

  if(n==sum)

    return true;

  else

    return false;

}

int main()

{

  int n;

  cout<<"请输入一个数:";

  cin>>n;

  if(narcissistic_number(n))

    cout< <<"是水仙花数"<

  else

    cout< <<"不是水仙花数"<

  return 0;

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复