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();}程序运行结果见插图。
输出所有的“水仙花数” 水仙花数是指一个 n 位数(n>;=3),它的每个位上的数字的 n 次幂之和等于它本身.所以n位数的水仙花数就是将其每一位的n次方相加.看是否等于其本身.三位的水仙花数共有4个:。
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 打印出所有的来“水仙花数”,所谓源“水仙花数”是指一2113个三位数5261,其各位数字立方和4102等于该数本身。例如:1653153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:main(){int i,j,k,n;printf(\"'water flower'number is:\");for(n=100;n;n+){i=n/100;分解出百位*/j=n/10%10;分解出十位*/k=n%10;分解出个位*/if(i*100+j*10+k=i*i*i+j*j*j+k*k*k){printf(\"%-5d\",n);}}printf(\"\\n\");}