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