-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)
你需要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++中返回什么?