为什么我的程序没有提供正确的输出?

-1 c

逻辑错在哪里?我发现它不正确,但它给出的输出只是1.它应该给出所有阿姆斯壮的数字从1到500.

     #include<stdio.h>
     #include<conio.h>
     void main()
         {
         clrscr();
         int a,b,c=0 ,d,i=1;
         while(i<=500)
             {
             b=i;
             while(b>0)
                 {
                 a=b%10;
                 c=(a*a*a)+c;
                 b=b/10;
                 }
             if(c==i)
    `            printf("%d",i);
             i++;
             }
          getch();
          }  
Run Code Online (Sandbox Code Playgroud)

P.P*_*.P. 5

你需要c在内循环之前初始化:

 while(i<=500)
 {
     b=i;
     c=0;    /* reset 'c' */
     while(b>0)
     {
        a=b%10;
        c=(a*a*a)+c;
        b=b/10;
     }
}
Run Code Online (Sandbox Code Playgroud)

您使用的是非标准签名main().请参阅:main()应该在C和C++中返回什么?