#include<iostream>
using namespace std;
double sumArea(double *radius,int n);
int main(){
int n;
cin>>n;
double *radius=new double [n];
for(int i=1;i<=n;i++)
{
double temp;
cin>>temp;
radius[i]=temp;
}
cout<<sumArea(radius,n)<<endl;
delete []radius;
return 0;
}
double sumArea(double *radius,int n){
for(int j=1;j<=n;j++)
{
const double pi=3.14;
radius[0]=0;
radius[0]+=rradius[j]*radius[j]*pi;
}
return radius[0];
}
sumArea函数里,第一个错误是redius[0]每次循环都赋值为0,而它是一个累加器,所以赋初值应该在for循环前面。第二个错误是for循环里最后一行redius打错了。。。
参考代码:
#include<iostream>
using namespace std;
double sumArea(double *radius,int n);
int main(){
int n;
cin>>n;
double *radius=new double [n];
for(int i=1;i<=n;i++)
{
double temp;
cin>>temp;
radius[i]=temp;
}
cout<<sumArea(radius,n)<<endl;
delete []radius;
return 0;
}
double sumArea(double *radius,int n){
radius[0]=0;
for(int j=1;j<=n;j++)
{
const double pi=3.14;
radius[0]+=radius[j]*radius[j]*pi;
}
return radius[0];
}
逻辑上的错误和代码的书写错误就这两个,前面的释放堆区空间会报debugg error ,我也是才学没多久,不是太懂,注释了就能通过了。