1. 程式人生 > >C++輸出N位水仙花數

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;

}