输入2个正整数m和n,输出m到n中所有水仙花数?用C语言怎么编

如题所述

1.水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)

#include <stdio.h>

bool IsDaffodil(int num)
{
    if (num < 100)
        return false;
    int sum = 0, n = num, m;
    while (n)
    {
        m = n % 10;
        sum += m*m*m;
        n /= 10;
    }
    return sum == num;
}

int main()
{
    int n, m;
    printf("input n and m : ");
    scanf("%d %d", &n, &m);
    printf("Daffodil n ~ m has : ");
    for (int i = n; i <= m; i++)
        if (IsDaffodil(i))
            printf("%d ", i);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-01

1.
水仙花数
是指一个
n
位数
(
n≥3
),它的每个位上的数字的
n
次幂之和等于它本身。(例如:1^3
+
5^3+
3^3
=
153)
#include <stdio.h>
bool IsDaffodil(int num)
{
    if (num < 100)
        return false;
    int sum = 0, n = num, m;
    while (n)
    {
        m = n % 10;
        sum += m*m*m;
        n /= 10;
    }
    return sum == num;
}
int main()
{
    int n, m;
    printf("input n and m : ");
    scanf("%d %d", &n, &m);
    printf("Daffodil n ~ m has : ");
    for (int i = n; i <= m; i++)
        if (IsDaffodil(i))
            printf("%d ", i);
    return 0;
}

第2个回答  2008-11-04
/*一个for循环就行了,水仙花数没有大于1000的,可以用数学证明出来的*/

#include<stdio.h>
void main()
{
int m,n,i;
int a,b,c;

do{printf("input one integer\n");
scanf("%d",&m);
printf("input another integer\n");
scanf("%d",&n);
}while(m<100&&n<1000);

if(m<n)
{ i=m;
m=n;
n=i;
}
for(i=n;i<m;i++)
{
a=i/100; /*分解出百位*/
b=(i-a*100)/10; /*分解出十位*/
c=i%10; /*分解出个位*/
if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);
}

}本回答被提问者采纳
第3个回答  2008-11-04
可以输入任意两个正整数
#include <stdio.h>
int fun(int s,int c)
{
if(c==0)
return 1;
return fun(s,c-1)*s;
}
int main()
{
printf("请一次输入两个正整数:");
int m,n,k,temp,sum=0;
int str[10];
scanf("%d %d",&m,&n);
m=m>n?m:n;
int i,count;
int have=0;
for(i=100;i<m;i++)
{
count=0;
temp=i;
for(k=0;temp>0;k++)
{
str[k]=temp%10;
temp=temp/10;
count++;
}
for(k=0,sum=0;k<count;k++)
sum+=fun(str[k],count);
if(sum==i)
{
have=1;
printf("%d\n",i);
}
}
if(have==0)
printf("该范围内没有水仙花数!\n");
}
第4个回答  2012-03-19
#include<stdio.h>
int main()
{
int m,n,i;
int a,b,c;

do{printf("input m\n");
scanf("%d",&m);
printf("input n\n");
scanf("%d",&n);
}while(m<100&&n<1000);

if(m<n){
i=m;
m=n;
n=i;
}
for(i=n;i<m;i++) {
a=i/100;
b=(i-a*100)/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);
}
return 0;

}
相似回答