

输入之后完全没反应,没办法调试,不知道哪里错了,dev编译过了,但在别的软件显示编译错误
a在第一个for循环里,计算完没有恢复原值,然后没有判断当前的数的位数是否大于等于3,所以导致结果出错了;
可以在第34行后将a恢复为原值,然后再判断一下当前的数的位数是否大于等于3即可。
修改如下:
参考链接:
https://baike.baidu.com/item/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0/2746160
#include <stdio.h>
#include <math.h>
int function(int a,int b);
int main(void){
int a,b;
scanf("%d %d",&a,&b);
// https://baike.baidu.com/item/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0/2746160
printf("%d",function(a,b));
return 0;
}
int function(int a,int b){
int m=0;
for(a=a;a<=b;a++){
int n=0;
int k=a;
while(a!=0){
a/=10;
n++;
}
int j=0;
a=k;
int sum=0;
int i=1;
while(j<n){
i=a%10;
a=a/10;
sum=sum+pow(i,n);
j++;
}
a=k; // 在使用a计算完位数和计算完各数位n次幂后,将a恢复会原值
if(n>=3&&sum==k){ // 判断当前的数a的位数n是否大于等于3
// printf("%d ",k);
m++;
}
}
return m;
}
