·水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于他本身。例如:153=13 +53 +33 ,本题要求编写程序,计算所以N位的水仙花数。
输入格式:
输入在一行中给出一个正整数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=%d\n",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("%d\n",i);
}
i++;
}
return 0;
}
更多推荐
C语言程序设计入门——水仙花数
发布评论