哪里有问题?请看一下。最好给我讲解一下

img

img

你x只是三个数立方根的和,并没有计算x这个三位数是不是等于他每一位数的立方根的和。

#include<stdio.h>
int main(){
int m,n,a,b,c,x,count;
count=0;
while(scanf("%d %d\n",&m,&n)!=EOF)
{
    if(100<=m&&m<n&&n<=999){
        for(x=m;x<=n;x++){
            a=x%10;
            b=(x/10)%10;
            c=(x/100)%10;
            if(x==a*a*a+b*b*b+c*c*c){
                count=1;
                printf("%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",x,a,a,a,b,b,b,c,c,c);continue;}
            else{
                continue;
            }
        }
        if(count==0) printf("none");
    }
}
return 0;
}

你的abc分别从1开始遍历显然是不合题意的,应该分别提取出个位,十位,百位上的数计算立方和。
这是我的代码,如果对你有帮助的话欢迎关注我的博客,定期更新算法与学习笔记~
回答不易,祝你学业进步。

代码:

#include<stdio.h>
int main(){
    // l左区间 r右区间 a个位数 b十位数 c百位数
    int l,r,a,b,c;
    while (scanf("%d %d\n",&l,&r) != EOF){
        // 如果找到水仙花数,isnone改为false,后面就不会输出none了
        bool isnone = true;
        for(int num = l;num<=r;num++){
            int temp=num;
            // 提取个位数
            a=temp%10;
            temp=temp/10;
            // 提取十位数
            b=temp%10;
            temp=temp/10;
            // 百位数
            c=temp;
            if(num == a*a*a+b*b*b+c*c*c){
                printf("%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",num,c,c,c,b,b,b,a,a,a);
                isnone = false;
            }
        }
        if(isnone == true)
            printf("none\n");
    }
    return 0;
}