求帮助,这个程序无法输出

问题遇到的现象和发生背景 N位水仙花数
问题相关代码,请勿粘贴截图

#include

int main()
{
int x,i,j=1,k,a,b,c,t,sum1=1,sum=0;
scanf("%d",&x);

for(i=x;i>0;i--){
    j=10*j;
}
for(k=j-1;k>=j/10;k--){
    a=k;
    while (a>0)
    {
        b=a%10;
        c=x;
        while (c>0)
        {
            sum1=sum1*b;
            c--;
        }
        sum=sum+sum1;
        a/=10;
        sum1=1;     
    }
    t=sum-k;
    if(t==0)
    printf("%d",k);
}
return 0;

}

运行结果及报错内容 无法输出

k=j-1;k>=j/10
k的初始值是j-1,而你进入for循环的条件是k大于等于j/10,根本满足不了,无法进入循环,当然执行不到printf语句那里喽,也就没有输出

修改处见注释,供参考:

#include <stdio.h>
int main()
{
    int x, i, j = 1, k, a, b, c, t, sum1 = 1, sum = 0;
    scanf("%d", &x);
    for (i = x; i > 0; i--) {
        j = 10 * j;
    }
    for (k = j - 1; k >= j / 10; k--) {
        a = k; sum = 0;   //这里缺了sum = 0;
        while (a > 0)
        {
            b = a % 10;
            c = x;
            while (c > 0)
            {
                sum1 = sum1 * b;
                c--;
            }
            sum = sum + sum1;
            a /= 10;
            sum1 = 1;
        }
        t = sum - k;
        if (t == 0)
            printf("%d ", k);
    }
    return 0;
}

img


#include <iostream>
using namespace std;
int main()
{
    int gw, sw, bw,n;
    cout << "请在100-1000之间选择一个数字:" << endl;
    cin >> n;
    for (int i = 100; i < n; i++)
    {
        gw = i % 10;      //个位
        sw = i / 10 % 10;  //十位
        bw = i / 100;//  百位
        if (gw * gw * gw + sw * sw * sw + bw * bw * bw == i)
        {
            cout << i << " ";
        }

    }



}