输入在一行中给出一个正整数N(3<=N<=7)
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:3
输出样例:153
370
371
407
#include <stdio.h> int main() { int n; scanf("%d",&n); int first=1; int i=1; while(i<n){first *= 10;i++; } //为了得到一个三位数first //printf("first=%dn",first); //查看当前first的值 //遍历100-999 i = first; while (i<first*10){ int t = i;//分解i,防止i被破坏,用t int sum = 0; do{//do循环可以处理0的问题,while处理不了 int d = t%10;//d是t的个位/*do是先执行指定语句,最后判断循环条件。 while是先判断循环条件,然后执行指定语句。所以,在循环内语句相同时,如果循环判断条件为0,do会执行一遍语句,而while则不会执行。*/ t/=10; int p = 1; int j = 0; while(j<n){p*=d;j++; } sum += p; }while(t>0); if (sum == i){printf("%dn",i); } i++; } return 0; }
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253'