C语言程序输出水仙花数
题目要求: 水仙花数是指一个N位正整数(N>=3),它的每一位上的数字的N次幂之和等于它本身。例如:153 = 13+53+33。本题要求编写程序,计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3<=N<=7)。 输出格式: 按递增顺序输出所有的N位水仙花数,每个数字占一行。
输入样例: 3 输出样例: 153 370 371 407
(代码主要采用while循环作为解题方法。) 代码如下:
#include <stdio.h> int main(void) { int n; //要求输入的n要大于2 int d; //d存储要判断的正整数的每一位的数字 int t,sum=0; int min=1,max=10; //输入n后计算的上下边界,max是min的10倍 int i,j; //最内层while循环的两个重要数值 scanf("%d",&n); i = n; while(--i){ //取代i--,先减后判断,循环内可以少计算一次 min*=10; max*=10; } while(min<max){ t = min; //初始化为当前要判断的正整数 sum=0; //进入循环之前要初始化 while(t>0){ d=t%10; t/=10; j=d; i=1; //要在进入下一个循环之前对i,j进行初始化 while(i<n){ j*=d; //用于存储每一位数字的N次方的结果 i++; } sum += j; //对各位数字的N次方加和 } if(min==sum) printf("%d ",min); min++; } }