本题每次输入两列数,每行为m和n,求那个数的n次方最接近m,刚开始用了许多方法都segment fault我写的代码也太长,循环太多太繁琐我是在网上看到别人写代码时用到了两个好用的函数在math.h中pow()求x的y次方,和fabs针对浮点数求绝对值与abs对整数求绝对值 #include<iostream> #include<cmath> #include<math.h> using namespace std; int main() { int m,n,num1,num2,k=0,b[10000]; while(cin>>m>>n) { if(m==0&&n==0) {break;}判断是否结束 for(int i=0;i<m;i++) { num1=pow(i,n)-m;//求距离 num2=pow(i+1,n)-m; if(num1<0&&num2>=0) //求横跨m的数 { if(fabs(num1)<fabs(num2)) {b[k]=i;k=k+1;} else {b[k]=i+1;k=k+1;}//满足条件的记录 } } } for(int i=0;i<k;i++) {cout<<b[i]<<endl;}//输出 }