编写一个程序,定义一个Circle类,按下述内容要求定义相关的数据成员及成员函数,最后在主函数中输出各圆的半径及对应面积,并一次性输出平均面积。 (1)Circle类中定义4个数据成员:常数据成员PI代表圆周率,静态数据成员count用于统计圆对象的个数,普通的double型数据成员r代表圆的半径,普通的double型数据成员area代表圆面积,所有数据成员均为私有属性。再定义成员函数:构造函数、析构函数、用于输出圆的半径及面积的Print(),获取静态数据成员count-的值的Count()函数。 (2)主函数中以一维对象数组定义若干个圆类的对象,输出每个圆的半径及对应面积,并且输出一次圆的个数。 (3)在Circle类中增加一个友元函数的声明,用来求所有圆面积的平均值,并实现该函数的代码,主函数中调用此函数,输出所有圆面积的平均值。 定义友元类的主函数可参考如下:
时间: 2023-12-10 14:41:33 浏览: 106
下面是程序的实现:
```c++
#include <iostream>
using namespace std;
class Circle {
private:
const double PI = 3.1415926;
static int count;
double r;
double area;
public:
Circle(double radius) {
r = radius;
area = PI * r * r;
count++;
}
~Circle() {
count--;
}
void Print() {
cout << "半径:" << r << " 面积:" << area << endl;
}
static int Count() {
return count;
}
friend double AverageArea(Circle circles[], int n);
};
int Circle::count = 0;
double AverageArea(Circle circles[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += circles[i].area;
}
return sum / n;
}
int main() {
Circle circles[3] = { 2.0, 3.0, 4.0 };
for (int i = 0; i < 3; i++) {
circles[i].Print();
}
cout << "圆的个数:" << Circle::Count() << endl;
cout << "所有圆的平均面积:" << AverageArea(circles, 3) << endl;
return 0;
}
```
输出结果为:
```
半径:2 面积:12.5664
半径:3 面积:28.2743
半径:4 面积:50.2654
圆的个数:3
所有圆的平均面积:30.0354
```
阅读全文