- 一圆型游泳池如图1所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
- 有三个学生组队参加某比赛,每个学生信息包含准考证号,姓名,个人成绩,另团队有一总成绩。
- 请写一学生类完成其定义实现。注意其中准考证号的不可变性,团队成绩的共享性;
- 编写主程序模拟生成三个学生给其赋值、完成相关信息的输出。
基本要求
能定义适当的类并定义对象完成设计并提交程序清单。
直接给出代码
1. 求造价
#include<iostream>
#include<math.h>
using namespace std;
double pi = acos(-1);
void test() {
int r;
cout << "输入泳池半径: ";
cin >> r;
//大圆半径
int r2 = r + 3;
//环形面积
double s = (pi * r2 * r2) - (pi * r * r);
//大圆周长
double l = 2 * pi * r2;
cout << "过道造价: " << s * 20 << endl;
cout << "栅栏造价: " << l * 35 << endl;
}
int main() {
test();
return 0;
}
2. 成绩类
#include<iostream>
#include<string>
using namespace std;
class Student {
public:
Student(const string num = "123", string name = "张三", double pGrade = 100)
:_num(num)
, _name(name)
, _pGrade(pGrade)
{
}
Student& operator=(const Student& tmp) {
_num = tmp._num;
_name = tmp._name;
_pGrade = tmp._pGrade;
return *this;
}
void teamGradeAdd(const Student& tmp) {
_teamGrade += tmp._pGrade;
}
void printInfo() {
cout << _num << "\t" << _name << "\t" << _pGrade << "\t" << endl;
}
private:
string _num;
string _name;
double _pGrade;
public:
static double _teamGrade;
};
double Student::_teamGrade = 0;
int main() {
string num, name;
double grade;
Student* s = new Student[3];
for (int i = 0; i < 3; i++) {
cin >> num >> name;
cin >> grade;
Student tmp(num, name, grade);
s[i] = (tmp);
s[i].teamGradeAdd(tmp);
}
cout << endl << "学号" << "\t" << "姓名" << "\t" << "个人成绩" << endl;
for (int i = 0; i < 3; i++) {
s[i].printInfo();
}
cout << "团队成绩:" << Student::_teamGrade << endl;
return 0;
}