把代码贴出来吧
#include <stdio.h>
int main()
{
int n, t, j, d, s=0;
scanf("%d", &n);
int first = 1, i;
for(i = 1; i < n; i++)
{
first *= 10;
}
for(i = first; i < first*10; i++)
{
s = 0; // ===============================每一次判断一个数i后都要将s初始化为0,不然s会进行累加超过1000,导致不等于s
for(t = i; t > 0; t/= 10) // 修改前是for(t = i; t > 0; t/10),t/10没有改变t的值,构成死循环
{
d= t % 10;
int p = 1;
for(j = 0; j < n; j++)
{
p*=d;
}
s+=p;
}
if (s==i)
printf("%d\n",i);
}
return 0;
}
代码写的规范一点 格式化一下