把判断某数是否是水仙花数定义成函数,然后调用该函数输出所有的水仙花数
展开全部
//所谓水仙花数是指一个三位数它的每位数字的立方之和等于该数,水仙花数翻译乘英文是narcissus few
//我是在谷歌金山词霸里找到的,不知道准不准确
#include <iostream.h>
#include <math.h>
bool Judge(int);//判断一个整型数字是否为水仙花数
inline int Biti(int d, int i);//求一个整数d的第i位(从右往左数)的数字
void All_narcissus_few();//输出所有的水仙花数
void main()
{
int num;
cout <<"Please input an integer:\n";
cin >>num;
if(Judge(num))
cout <<num<<" is a narcissus few"<<endl;
else
cout <<num<<" is not a narcissus few"<<endl;
}
bool Judge(int d)
{
All_narcissus_few();
if(d < 100 || d > 999)//首先判断d是否为三位数
return false;
else
{
int a[3];//分别将d的百位数,十位数,个位数付给a[2], a[1] ,a[0]
int i;
for(i = 0; i < 3; i++)
a[i] = Biti(d, i+1);
for(i = 0; i < 3; i++)
d -= (int)pow(a[i], 3);
if(d == 0)
return true;
else
return false;
}
}
int Biti(int d, int i)
{
int j;
j = (int)(d - d / (int)pow(10, i) * pow(10, i)) / pow(10, i - 1);
return j;
}
void All_narcissus_few()
{
cout <<"All the narcissus few are:\n";
int num, i, temp;
int a[3];//分别将num的百位数,十位数,个位数付给a[2], a[1] ,a[0]
for(num = 100; num < 1000; num++)
{
temp = num;
for(i = 0; i < 3; i++)
a[i] = Biti(num, i+1);
for(i = 0; i < 3; i++)
temp -= (int)pow(a[i], 3);
if(temp == 0)
cout <<num<<'\t';
}
cout <<endl;
}
呃呃呃呃,C语言,我没学过。不过,算法和语言的关系不大。
//我是在谷歌金山词霸里找到的,不知道准不准确
#include <iostream.h>
#include <math.h>
bool Judge(int);//判断一个整型数字是否为水仙花数
inline int Biti(int d, int i);//求一个整数d的第i位(从右往左数)的数字
void All_narcissus_few();//输出所有的水仙花数
void main()
{
int num;
cout <<"Please input an integer:\n";
cin >>num;
if(Judge(num))
cout <<num<<" is a narcissus few"<<endl;
else
cout <<num<<" is not a narcissus few"<<endl;
}
bool Judge(int d)
{
All_narcissus_few();
if(d < 100 || d > 999)//首先判断d是否为三位数
return false;
else
{
int a[3];//分别将d的百位数,十位数,个位数付给a[2], a[1] ,a[0]
int i;
for(i = 0; i < 3; i++)
a[i] = Biti(d, i+1);
for(i = 0; i < 3; i++)
d -= (int)pow(a[i], 3);
if(d == 0)
return true;
else
return false;
}
}
int Biti(int d, int i)
{
int j;
j = (int)(d - d / (int)pow(10, i) * pow(10, i)) / pow(10, i - 1);
return j;
}
void All_narcissus_few()
{
cout <<"All the narcissus few are:\n";
int num, i, temp;
int a[3];//分别将num的百位数,十位数,个位数付给a[2], a[1] ,a[0]
for(num = 100; num < 1000; num++)
{
temp = num;
for(i = 0; i < 3; i++)
a[i] = Biti(num, i+1);
for(i = 0; i < 3; i++)
temp -= (int)pow(a[i], 3);
if(temp == 0)
cout <<num<<'\t';
}
cout <<endl;
}
呃呃呃呃,C语言,我没学过。不过,算法和语言的关系不大。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询