用c++实现:给出n个圆的半径,求n个圆的面积之和。想问下各位大佬这个有什么问题运行的结果不对。。

#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 ,我也是才学没多久,不是太懂,注释了就能通过了。