很综合性的题目。对于我这种菜鸡新手来说,想要一次写好这个代码十分不现实,所以最好的办法就是分成一块一块的来写,在写的过程中不断调试或者设置一些输出语句来检查。每一块都写对了总的结果就出来了。
代码如下:
#include<stdio.h>
int main(){
int n,i,k,p=1,sum=0,q,g;
int x=1;
int cnt=0;
scanf("%d",&n);
for(i=1;i<n;i++){
x=10*x;
}//x最小n位数
int a;
int b=x*10-1;//b最大n位数
//printf("%d %d",a,b);
while(x<=b){
a=x;
for(p=1;p<=n;p++){//每一位n次方加和
k=x%10;
g=k;
for(q=1;q<n;q++){//n次方
k=g*k;
}
sum=sum+k;
x=x/10;
}
if(sum==a){
if(cnt!=0){//保证最后一行没有换行
printf("\n");
}
printf("%d",a);
cnt++;
}
sum=0;//sum记得每次循环要清零
x=a;
x++;
}
return 0;
}