for语句陷入死循环

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:25:34
谁能帮我看看是哪里错了啊 运行时就是满屏幕的153153 停不下来
#include<stdio.h>
void main()
{int i,a,b,c,j;
j=0;
printf("水仙花数为\n");
for(i=100;i<=999;i++){a=(int)(i/100);
b=(int)(i/10%10);
c=i%10;
while(i==a*a*a+b*b*b+c*c*c)
{printf("%d",i);
j++;
if(j%3==0)printf("\n");}
}
}

我做的第二种方法也遇到这样的问题。。。。
#include<stdio.h>
void main()
{int i,j,k;
for(i=1;i<=9;i++){
for(j=0;j<=9;j++){
for(k=0;k<=9;k++){while((i*100)+(j*10)+k==(i*i*i)+(j*j*j)+(k*k*k))
printf("%d",(i*100)+(j*10)+k);}
}
}
}
可以加分的 谢谢啦

问题出在你的while里,当i==a*a*a+b*b*b+c*c*c时就死循环了,因为你在while循环里没有改变i 的值,也没有写跳出循环的语句

要用break;

#include <stdio.h>
int main(void)
{
int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d\n",a,b,c);
return 0;
}

你写的当153成立时,输出153会死循环,把while改成if语句

while应改成if
还有printf("%d",i); 改为printf(" %d",i);

我在printf语句后加了个continue 还是不行也