C语言程序问题,初级入门的问题

问题遇到的现象和发生背景

水仙花数问题

用代码块功能插入代码,请勿粘贴截图

#include
#include
int main()
{
int n,x;
scanf("%d",&n);
int i;
for(i=pow(10,n-1);i
{
int a[8]={0};
int b;
b=i;
// while(b>0)
// {
// x=0;
// a[x]=b%10;
// b/=10;
// x++;
// }

for(x=0;b>0;x++){
a[x]=b%10;
b/=10;

}
if(i==pow(a[0],3)+ ..正文不能重复,就是所有数组的三次方相加。
{
printf("%d\n",i);
}

}

return 0;

}

运行结果及报错内容

为什么用while循环不行,而用for循环就可以?并且我发现只能输出三位数,三位以上的就不行了。

我的解答思路和尝试过的方法

想了半天都不会

我想要达到的结果

救助!

while循环里把x = 0;提到循环外面。
你下面用了pow(a[0],3)判断,3位以上的满足不了了

#include <math.h>
int main()
{
    int n, x;
    scanf("%d", &n);
    int i;
    for (i = pow(10, n - 1); i < pow(10, n); i++)
    {
        // int a[8] = {0};
        int b, s = 0;
        b = i;
        x = 0;
        while (b > 0)
        {
            // a[x] = b % 10;
            s += pow(b % 10, n);//几位数就得几次幂
            b /= 10;
            x++;
        }
        // if (i == pow(a[0], 3)) + ..正文不能重复,就是所有数组的三次方相加。
        if (i == s) //+ ..正文不能重复,就是所有数组的三次方相加。
        {
            printf("%d\n", i);
        }
    }

    return 0;
}


#include <stdio.h>
int main()
{
    int i,j,k,n;
    for(i = 100;i < 1000;i++)
    {
        j = i%10;
        k = i/10%10;
        n = i/100;
        if(j*j*j + k*k*k + n*n*n == i)
            printf("%5d\n",i);
    }
    return 0;
}