/*求水仙花数。输入一个正整数n,计算n位水仙花数。*/
#include<stdio.h> //编译预处理命令
int mypow (int x, int n); //声明自己的幂函数
int main (int agrc, char const *agrv[]) //主函数
{
int n, start, end, temp, sum; //变量定义
scanf("%d", &n); //输入正整数
start = mypow(10, n-1); //计算最小的n位正整数
end = start*10 - 1; //计算最大的n位正整数
for ( ; start < end; start++) //遍历所有的n位正整数
{
temp = start;
sum = 0;
while(temp)
{
sum += mypow(temp%10, n); //计算其各位数的n次方之和
temp /= 10;
}
if (sum == start)
printf("%d\n", start); //如果满足各位数的n次方之和等于其本身,就输出该水仙花数
}
return 0;
}
int mypow (int x, int n) //定义自己的幂函数
{
int ret;
ret = 1; //ret的初始值必须设为1否则会出错
while(n--) //当n等于0时,循环停止
ret *= x;
return ret;
}
#运行程序,输入一个正整数n,计算n位水仙花数。
版权声明:本文为Xuejin002原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。