输入所有的水仙花数 为什么break不能用 break只能用于for循环,while循环,switch case分支;而不能用于if else分支中。代码中,for循环后面的分号应该全部删掉,这样才能构成for循环。否则你的break就只能判定为在if else分支中了。
输入您的问题编写程序:输出所有的3位水仙花数,所谓水仙花数就是指所有位的数字的立方之和等于该数, #includevoid main(){int n,a,b,c;printf(\"请输入n的值:\\n\");scanf(\"%d\",&n);if(n|n>;999){/要用{}括起来printf(\"error。\\n请重新输入\\n\");}else{a=n/100;printf(\"a is%d\\n\",a);b=(n-a*100)/10;printf(\"b is%d\\n\",b);c=n%10;printf(\"c is%d\\n\",c);if(n=a*a*a+b*b*b+c*c*c)/第一次编的时候只用了一个“=”,结果成了赋值语句了,到这里永远正确{/结果所有的数都输出了是 narcissus numberprintf(\"n=d is a narcissus number\\n\",n);}else{printf(\"n=d is not a narcissus number\\n\",n);}}}
c语言 输出所有水仙花数 在第一个for循环前面给2113s赋值时,5261a、b、c的值没有初始化,所以整个s=100*a+10*b+c是不确定的4102值,程序运行便1653会出错!建议修改:将语句s=100*a+10*b+c放到条件语句if(s=(a*a*a+b*b*b+c*c*c))之前,这样s得到的是确定值,程序运行正常。修改后源程序如下:include\"Stdio.hvoid main(){int a,b,c,s;for(a=1;a;a+){for(b=0;b;b+){for(c=0;c;c++){s=100*a+10*b+c;if(s=(a*a*a+b*b*b+c*c*c))printf(\"%d\\n\",s);}}}getchar();}程序运行结果见插图。