例4-3一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
7a08ad96-69ef-42b8-9889-114a2010c7a0.png
输入格式:
输入一个整数或小数。
输出格式:
分两行输出:在第一行中输出栅栏的造价。在第二行输出过道的造价。
输入样例:
10
输出样例:
Fencing Cost is $2858.85
Concrete Cost is $4335.4
学c++之前自己写的代码是这样的
#include <iostream>
using namespace std;
int main(){
double r,cr,ar;
float pi=3.1415926;
cin>>r;
cr=35*2*pi*(r+3);
ar=((r+3)*(r+3)*pi)*20-(r*r*pi)*20;
cout<<"Fencing Cost is $"<<cr<<endl;
cout<<"Concrete Cost is $"<<ar;
return 0;
}
几点注意
这里的pi不是3.14
平方的函数pow(底数,指数) 别忘导包 include <math.h>
后来老师强调要注意面向对象而不是要面向过程 就把代码改成了这样
#include<iostream>
using namespace std ;
const double pi=3.1415926;
class Circle{
private:
double r;
public :
Circle(double r);//这个地方你在类里面就不需要在declean是在类里面了
double area();
double peremiter();
};
Circle::Circle(double casual_r){
r=casual_r;//它相当于把对象带来的那个值给了成员变量
};
double Circle::area(){
return pi*r*r;
};
double Circle::peremiter(){
return 2*pi*r;
};
int main(){
int casual_r;
cin>>casual_r;
Circle c1(casual_r); //内层游泳池
Circle c2(casual_r+3);
cout<<"Fencing Cost is $"<<c2.peremiter()*35<<endl;
cout<<"Concrete Cost is $"<<(c2.area()-c1.area())*20<<endl;
}
当然 这只是最后的成品并不是一开始这样,中间出现过很多笑人的错误,站在这里,予以警示
在声明类里面的函数时又强调了一遍它在这个类里,这样是没有意义的。
当调用普通的函数时,因为半径本身就是这个对象的数据成员 可以直接访问他。这样再塞一个参数,这是不必要的,因为这里是直接调用的对象的成员变量 没有搞清楚他们的关系 他们的关系实际是这样的。
生成对象后给他分配成员变量(这是他们成员变量的内存空间是单独的)
但是所有的对象所占用的成员函数是相同的内存空间。
其实在写函数时都默认的调用了this所指的成员变量当无参时,this是可以省略的,当有参数时,是不能省略的。
创建对象的时候不能叠在一起。
调用函数的时候不用括号。
写函数的时候不加返回值类型。