求圆面积和
#include<iostream>
using namespace std;
double sum(double *r,int n);
int main(){
int n,i;
cin>>n;
double *r=new double[n];//radius[n]
for(i=0;i<n;i++){
cin>>r[i];
}
cout>>"%.5lf">> sum(double *r,int n)>>endl;
delete [] r;
}
double sum(double *r,int n){
int i;
double su=0,s=0;
for(i=0;i<n;i++){
s=r[i]*r[i]*3.1415926;
su+=s;
}
return s;
}
cout>>"%.5lf">> sum(double *r,int n)>>endl;
->
printf("%.5lf\n", sum(r,n));
#include<iostream>
#include<cstdio>
using namespace std;
double sum(double *r,int n);
int main(){
int n,i;
cin>>n;
double *r=new double[n];//radius[n]
for(i=0;i<n;i++){
cin>>r[i];
}
printf("%.5lf\n", sum(r,n));
delete [] r;
return 0;
}
double sum(double *r,int n){
int i;
double su=0,s=0;
for(i=0;i<n;i++){
s=r[i]*r[i]*3.1415926;
su+=s;
}
return s;
}
#include <iostream>
#include <iomanip>
using namespace std;
double sum(double* r, int n);
int main() {
int n, i;
cin >> n;
double* info = new double[n];
for (i = 0; i < n; i++) {
cin >> info[i];
}
cout << fixed << setprecision(5) << sum(info, n) << endl;
delete[] info;
return 0;
}
double sum(double* r, int n) {
int i;
double su = 0, s = 0;
for (i = 0; i < n; i++) {
s = r[i] * r[i] * 3.1415926;
su += s;
}
return su;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:问题分析: - 代码中存在两个问题。首先,在主函数中使用了错误的格式来输出结果。其次,在sum函数中,计算每个圆的面积时,将结果赋值给了变量s,但应该将结果累加到变量su中。
解决方案: 1. 修正主函数中的输出格式,将 cout<<"%.5lf"<<sum(r, n)<<endl;
修改为 cout<<fixed<<setprecision(5)<<sum(r, n)<<endl;
。这样可以保留小数点后五位并进行输出。 2. 在sum函数中,将 s=r[i]*r[i]*3.1415926;
修改为 su+=r[i]*r[i]*3.1415926;
,将计算结果累加到变量su中。
修改后的代码如下:
#include<iostream>
#include<iomanip>
using namespace std;
double sum(double *r, int n);
int main(){
int n, i;
cin>>n;
double *r = new double[n]; //radius[n]
for(i=0; i<n; i++){
cin>>r[i];
}
cout<<fixed<<setprecision(5)<<sum(r, n)<<endl;
delete [] r;
}
double sum(double *r, int n){
int i;
double su=0;
for(i=0; i<n; i++){
su+=r[i]*r[i]*3.1415926;
}
return su;
}
通过以上修改,可以得到正确的圆的面积和结果。