不会,c语言 好难啊7777

水仙花”数。从键盘输入两个正整数m和n(m≥1,n≤1000),输出m和n之间所有的“水仙花”数,要求每行显示2个“水仙花”数。“水仙花”数是指各位数字的立方和等于这个数。如153的各位数字立方和是13+5+3=153,所以153是一个“水仙花”数。


#include <stdio.h>
int fib(int m);
int main()
{
    int n,m,i;
    printf("Input m: ");
    scanf("%d",&m);
    printf("Input n: ");
    scanf("%d",&n);
    for(i=m;i<n;i++)

        if(fib(i))
            printf("%d\n",fib(i));
    return 0;
}
int fib(int i)
{
    int s=0,a,copy;
    copy=i;
    do{
    a=i%10;
    i/=10;
    s+=a*a*a;
    }while(i);
if(s==copy)return s;
return 0;
}

https://blog.csdn.net/qq_51641495/article/details/109699657

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7561758
  • 这篇博客也不错, 你可以看下C语言经典例题:水仙花数(两种应用解决办法)
  • 除此之外, 这篇博客: 简单编程题中的 求出0~100000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    //方法1
    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	int i = 0;
    	for (i = 0; i <= 100000; i++)
    	{
    		//判断i是否为自幂数
    		//1.计算i的位数
    		int n = 1;
    		int tmp = i;
    		while (tmp /=10)
    		{
    			n++;
    		}
    		//2.计算每一位的n的次方之和
    		tmp = i;
    		int sum = 0;
    		while (tmp)//1234
    		{
    			sum += (int)pow(tmp % 10, n);
    			tmp /=10;
    		}
    		//比较
    		if (sum == i)
    		{
    			printf("%d ", i);
    		}
    	}
    	return 0;
    }
    //求3位数的水仙花
    #include<stdio.h>
    
    int main()
    {
    	int i;
    	int a, b, c;//a为个位数字,b为十位数字,c为百位数字 
    	for (i = 100; i < 1000; i++)
    	{
    		a = i % 10;
    		b = i / 10 % 10;
    		c = i / 100;
    
    		if (i == (a * a * a + b * b * b + c * c * c))
    		{
    			printf("%d\n", i);
    		}
    
    	}
    	return 0;
    }

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^