PrintnN()函数使用循环就可以实现了,而narcissistic()函数里我一开始没有注意的是数字位数不一定。使用if语句太过繁琐,想到应该要用循环。
代码如下:
/* 你的代码将被嵌在这里 */
#include <math.h>//后面要用到pow()函数
int narcissistic(int number)
{
int a = number;//number之后还会用到,所以要新赋一个进行运算
int i = 0;//标记输入数字的位数
int sum = 0;
do {
a /= 10;
i++;
} while (a != 0);//判断输入数字的位数
a = number;
while (a > 0)
{
sum += pow(a % 10, i);
a /= 10;
}
if (sum == number)
return 1;
else
return 0;
}
void PrintN(int m, int n)
{
int x;
for ( x= m + 1; x < n; x++) //遍历
{
if (narcissistic(x) == 1)
printf("%d\n", x);
}
}
输出结果:
如有问题请大佬斧正,感谢!