C++输出N位水仙花数

1、编写一个类,提供打印n(n>=3,n<10)位水仙花数的功能。

详细描述:以三位数为例,如果它的个位的立方、十位的立方、百位的立方这三者之和,与这个数本身相等,则该数称为水仙花数。如153=13+53+33,故153是一个水仙花数,n运行时输入,需要编写一个方法,或者叫函数;此外,寻找水仙花数,需要编写一个循环。在定义了百位、十位、个位三个整型变量后,用下面的代码可以实现功能;

实现代码:

#include<iostream>

using namespace std;

 

class flower                 //定义一个类flower

{

private:

         intn;

public:

         voidSXH();

         intget();

};

 

int flower::get()       

{

  cin>>n;

  return n;

}

 

int mihanshu(int x,int c)   //定义一个幂函数

{

         inti,num;

         if(c==1)

         {

                  num=x;

         }

         else

         {

                  num=x;

                  for(i=1;i<c;i++)

                  {

                  num=num*x;

                  }

         }

         returnnum;

}

 

void flower::SXH()          //判断水仙花函数

{

  intflag1,flag2,array[10],i,j,sum,flag3;

 flag1=mihanshu(10,(n-1));

 flag2=mihanshu(10,n);

 for(i=flag1;i<flag2;i++)

 {  

           flag3=i;

           sum=0;

           for(j=1;j<=n;j++)

           {

                   array[j-1]=flag3%10;

                   flag3=flag3/10;

                   array[j-1]=mihanshu(array[j-1],n);

                   sum=sum+array[j-1];

           }

           if(sum==i)

     cout<<i<<endl;

           sum=0;

  }  

}

 

int main()                     

{  

         intmihanshu(int x,int c);

   flower s1;

         intN;

         while(1)

         {

         cout<<"**********************"<<endl;

         cout<<"Pleaseinput N: ";

   N=s1.get();

   s1.SXH();

         }

         return0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值