求水仙花数

#include<stdio.h> int i,j,k,n; while(i<=9){ int z; z=i*i*i+j*j*j+k*k*k; n=i*100+j*10+k; k++; if(k==10){ k=0;j++;} if(j==10){ j=0;i++;} if(z==n){printf("%d\n",n);} }

#include <stdio.h> #include<math.h> main()//水仙花的输出要对所有三位数进行判断,所以关键在于如何输出所有的三位数。 //for和while很像,只不过for把while判断条件放在式2处,并将while循环一次产生的影响放到式3处。式1是前提预设。 { int i=1,j=0,k=0,n; //法一: for(n=100;n<1000;n++) { i=n/100; j=(n-i*100)/10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%6d",n); } printf("\n"); //法二: for(i=1;i<=9;i++) { for(j=0;j<=9;j++) { for(k=0;k<=9;k++) { if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf("%6d",i*100+j*10+k); } } } printf("\n"); //法三: i=1;j=0;k=0;//因为前面法一法二运行后他们都不是初始值,所以要重新赋值。 while(i<=9){ int z; z=i*i*i+j*j*j+k*k*k; n=i*100+j*10+k; k++; if(k==10){ k=0;j++; } if(j==10){ j=0;i++;} if(z==n){printf("%d\n",n);} } }