求3-7位的水仙花数 本题的解法来在 b站 翁恺老师的课
#include <stdio.h>
int main()
{
int n ;
printf("请您输入(3位-7位)水仙花数的位数:");
scanf("%d",&n);
int m = n;
int i=1;
if(3<=n&7>=n){// 制造一个4位的最小数
for(;m>1;m--){
i = i * 10;
}
int j = i*10,k;// 制造一个4位数 1000--9999 K用于求积
while(i<j){
// 便利每个数的每位幂的和
int t = i;//例如 :t作为1000-9999中的每一个数进行运算
int sum = 0;
//do while 用于求3位数的每位的3次方 同理用于求4位数的每位的4次方
do{
//
int d = t%10;//取出每一位数进行运算
t /=10;//去掉末尾的数
int p = d;//末尾的数
k = 1;
while(k<n){//运行的 位数 次
p *= d;
k++;
}
sum += p;
}while(t>0);
if(sum == i){
printf("水仙花数:%d \n",i);
}
i++;
}
}else{
printf("水仙花数位数不对");
printf("请您重新输入(3位-7位)水仙花数的位数:");
scanf("%d",&n);
}
return 0;
}