pta编写函数判断水仙花数(py判断水仙花数)
编写自定义函数,求水仙花数,并输出
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
函数接口定义:
int narcissistic(int number);
void PrintN(int m,int n);
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m,n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
例:
#includelt;stdio.hgt;
int narcissistic(int number);
void PrintN(int m,int n);
int main()
{
int m,n;
scanf("%d%d",m,n);
if(narcissistic(m))printf("%d is a narcissistic number\n",m);
PrintN(m,n);
if(narcissistic(n))printf("%d is a narcissistic number\n",n);
return 0;
}
运行:
扩展资料:
方法一、
#includelt;stdio.hgt;
int narcissistic(int number);
void PrintN(int m,int n);
int main(){
int m,n;
scanf("%d%d",m,n);
if(narcissistic(m))printf("%d is a narcissistic number\n",m);
PrintN(m,n);
if(narcissistic(n))printf("%d is a narcissistic number\n",n);
return 0;
}
int narcissistic(int number){
int count,digit,item,n,sum,ret,k,i;
n=number,count=0;
while(n){//算出number是几位数。
n/=10;
count++;
}
sum=0,n=number;
while(n){
digit=n%10;
item=1;
for(i=0;ilt;count;i++)
item*=digit;
sum+=item;
n/=10;
}
if(sum==number)ret=1;
else ret=0;
return ret;
}
void PrintN(int m,int n){
int i;
for(i=m+1;ilt;n;i++)
if(narcissistic(i))printf("%d\n",i);
}
方法二:
int narcissistic(int number){
int count,sum,temp,ret;
count=0,temp=number;
while(temp){
count++;
temp/=10;
}
sum=0,temp=number;
while(temp){
sum+=pow(temp%10,count);
temp/=10;
}
if(sum==number)ret=1;
else ret=0;
return ret;
}
void PrintN(int m,int n){
int i;
for(i=m+1;ilt;n;i++)
if(narcissistic(i))printf("%d\n",i);
}
编写函数判断一个数字是否是水仙花数。若是水仙花数,函数返回1,否则返回0
按照你的要求,把图中的求水仙花数的程序改为函数调用的形式的C语言程序如下
#includestdio.h
int?isNarcissus(int?a){
?int?b,c,d;
?b=a/100;
?c=(a/10)%10;
?d=a%10;
?if((b*b*b+c*c*c+d*d*d)==a){
??return?1;
?}else{
??return?0;
?}
}
int?main(){
?int?a;
?for(a=100;a1000;a++){
??if(isNarcissus(a)==1){
???printf("%d\n",a);
??}
?}
?return?0;
}
运行结果
153
370
371
407
python使用函数实现水仙花数?
答: 首先要明白水仙花数的定义,它是指一个三位数,它的每个位上的数字的三次幂之和等于它本身。所以问题就转化为我们如何将三位数的个位、十位和百位都表示出来。然后再遍历100~999的每一个数字去判断其是否为水仙花数。具体代码如下所示。
最终的运行结果如下,水仙花数总共有4个,具体如图片所示。