1.学生类(静态数据成员和静态成员函数)

题目:

定义一个类Student,要求使用静态数据成员或静态成员函数计算全班学生的《计算机导论》课程的总成绩和平均成绩。请同学们自行设计该类。

【提示】

静态数据成员:static int total; 表示所有同学成绩总分

静态成员函数:static void Average(int sum){} 计算sum个学生的平均成绩,主函数在调用的时候采用Student::Average(n)的形式。

【输入形式】

学生姓名 课程成绩

【输出形式】

总成绩和平均成绩

【样例输入】

Zhang 82

Li 79

Wang 93

Liu 66

Xia 90

【样例输出】

410

82

代码:

#include<iostream>
#include<string.h>
#define N 100
using namespace std;class Student{public:void setstudent(const char aa[10], int ss);static int Average(int sum){int a = total / sum; return a;}int gettotal(){return total;}private:char a[10];int score;static int total;
};int Student::total = 0;void Student::setstudent(const char aa[10], int ss){strcpy(a, aa);score = ss;total += score;
}int main(){Student stu[5];for(int i = 0; i < 5; i ++){char name[N];int score;cin>>name;cin>>score;stu[i].setstudent(name,score); //构造函数在对象创建时被调用;}Student::Average(5);cout<<stu[0].gettotal()<<endl;cout<<Student::Average(5);return 0;
}

2.学生成绩高低(友元函数)

题目:

在上一题的基础上,设计一个友元函数,比较某两个学生《计算机导论》成绩的高低

【提示】

友元函数声明如下:friend char Compare(const Student s1,const Student s2);

【输入形式】

学生姓名和分数

【输出形式】

分数高低的结果( > 或 < 或 =)

【样例输入】

Zhang 92

Wang 89

【样例输出】

>

代码:

#include<iostream>
#include<string.h>
using namespace std;class Student{public:Student(const char aa[10], int ss){strcpy(a, aa); score = ss;}friend char Compare(const Student s1, const Student s2);
private:char a[10];int score;
};char Compare(const Student s1, const Student s2){char a;if(s1.score > s2.score){ a = '>';}if(s1.score < s2.score){ a = '<';}if(s1.score == s2.score){ a = '=';}return a;
}int main(){char name[10];int grade;cin>>name>>grade;Student s1(name,grade);cin>>name>>grade;Student s2(name,grade);cout<<Compare(s1,s2)<<endl;return 0;
}

3.Student类和ArrayofStudents类(动态数组)

题目:

设计并测试名为Student和ArrayOfStudents的类。

Student类说明如下:

(1)有3个私有数据成员name,id,grade,描述属性值

(2)声明3个成员函数,其一默认构造函数,为各属性值设定初始值;其二setValues完成三个属性值的初始化;其三output完成输出。

ArrayOfStudents类说明如下:

(1)声明2个私有数据成员,其一为Student类型的指针;其二为数组长度。

(2)设计1个成员函数element要求能够取出第i个对象,并对其属性值进行修改。

(3)设计构造函数和析构函数,并在构造函数中new空间,析构函数中delete空间,并cout输出提示语句。

main( )函数如下:

int main( ) {

int count;

cin >> count; //请输入学生人数;

ArrayOfStudents stus(count); //创建数组对象

stus.element(0).output();

stus.element(1).output();

stus.element(0).setValues(“ZhangSan”, “001”, 85);

stus.element(1).setValues(“Lisi”, “002”, 90);

stus.element(0).output();

stus.element(1).output();

return 0;

}

【输入形式】

动态数组的长度

【输出形式】

第1,2个数组元素,并输出其修改后的各属性值。

【样例输入】

3
【样例输出】

Name:*** id:000 grade:0

Name:*** id:000 grade:0

Name:ZhangSan id:001 grade:85

Name:Lisi id:002 grade:90

Deleting…

代码:

#include <iostream>
#include <string.h>
using namespace std;class Student{public:Student(const char name[10] = "***", const char id[10] = "000", int grade = 0);void setValues(const char nn[10], const char iid[10], int ggrade);void output(){cout<<"Name:"<<name<<" "<<"id:"<<id<<" "<<"grade:"<<grade<<endl;}
private:char name[10], id[10];int grade;
};Student::Student(const char nname[10], const char iid[10], int ggrade){strcpy(name, nname);strcpy(id, iid);grade = ggrade;
}void Student::setValues(const char nn[10], const char iid[10], int ggrade){strcpy(name, nn);strcpy(id, iid);grade = ggrade;
}class ArrayOfStudents{public:ArrayOfStudents(int num);Student& element(int num){return p[num];}~ArrayOfStudents(){delete []p;cout<<"Deleting...";}
private:Student *p;int numerofpoints;
};ArrayOfStudents::ArrayOfStudents(int num){numerofpoints = num;p = new Student[num];
}int  main( ){int count;cin >> count;      //请输入学生人数;ArrayOfStudents stus(count);      //创建数组对象stus.element(0).output();stus.element(1).output();stus.element(0).setValues("ZhangSan", "001", 85);stus.element(1).setValues("Lisi", "002", 90);stus.element(0).output();stus.element(1).output();return 0;
}

4.多文件编程

题目:

请将"Student类和ArrayOfStudents类(动态数组类)”题,改编为多文件结构后提交。

代码:

将下面五段代码存储在五个文件中,放在同一个文件夹中

//将这段代码存储在ArrayOfStudents.cpp文件
#include "ArrayOfStudents.h"
#include <iostream>
#include "student.h"
using namespace std;ArrayOfStudents::ArrayOfStudents(int num){numerofpoints = num;p = new Student[num];
}//将这段代码存储在ArrayOfStudents.h
#include <iostream>
#include "student.h"
using namespace std;class ArrayOfStudents{public:ArrayOfStudents(int num);Student& element(int num){return p[num];}~ArrayOfStudents(){delete []p;cout<<"Deleting...";}
private:Student *p;int numerofpoints;
};//将这段代码存储在main.cpp文件中
#include "ArrayOfStudents.h"
#include <iostream>
using namespace std;int  main( ) {int count;cin >> count;      //请输入学生人数;ArrayOfStudents stus(count);      //创建数组对象stus.element(0).output();stus.element(1).output();stus.element(0).setValues("ZhangSan", "001", 85);stus.element(1).setValues("Lisi", "002", 90);stus.element(0).output();stus.element(1).output();return 0;
}//将这段代码存储在student.cpp文件中
#include <iostream>
#include <string.h>
#include "student.h"
using namespace std;Student::Student(const char nname[10], const char iid[10], int ggrade){strcpy(name, nname);strcpy(id, iid);grade = ggrade;
}void Student::setValues(const char nn[10], const char iid[10], int ggrade){strcpy(name, nn);strcpy(id, iid);grade = ggrade;
}//将这段代码存储在student.h文件中
#ifndef SSS_H_INCLUDE
#define SSS_H_INCLUDE
#include <iostream>
using namespace std;class Student{public:Student(const char name[10] = "***", const char id[10] = "000", int grade = 0);void setValues(const char nn[10], const char iid[10], int ggrade);void output(){cout<<"Name:"<<name<<" "<<"id:"<<id<<" "<<"grade:"<<grade<<endl;}
private:char name[10], id[10];int grade;
};
#endif // SSS_H_INCLUDE

5.派生类的构造函数和析构函数的调用

题目:

阅读下面的程序,请编写一个不超过五行代码的主函数,使其满足对应的输出要求。

class CBase1{

int x ;

public:

CBase1( ) { x=0 ; cout<<“GZ CBase1()!”<<endl;}

CBase1(int a) { x=1;cout<<“GZ CBase1(int)!”<<endl;}

~CBase1( ) { cout<<“XG ~CBase1()!”<<endl;}

};

class CBase2{

int y;

public:

CBase2( ) { y=0 ;cout<<“GZ CBase2()!”<<endl;}

CBase2(int a) { y=a ;cout<<“GZ CBase2(int)!”<<endl;}

~CBase2() { cout<<“XG ~CBase2()!”<<endl;}

};

class A{

int x;

public:

A () {x=0; cout<<“GZ A()!”<<endl;}

A(int a) { x=a; cout<<“GZ A(int)!”<<endl;}

~A() { cout<<“XG ~A()!”<<endl;}

};

class CDerived:public CBase1, virtual public CBase2{

A a;

public:

CDerived() { cout<<“GZ CDerived()!”<<endl;}

CDerived(int x,int y ,int z):a(x),CBase1(y),CBase2(z)

{ cout<<“GZ CDerived(int,int)!”<<endl;}

~CDerived() { cout<<“XG ~CDerived()!”<<endl;}

};

int main(){ //请补充,不允许超过五行代码 }

【样例输出】

GZ CBase2()!
GZ CBase1()!
GZ A()!
GZ CDerived()!
GZ CBase2(int)!
GZ CBase1(int)!
GZ A(int)!
GZ CDerived(int,int)!
XG ~CDerived()!
XG ~A()!
XG ~CBase1()!
XG ~CBase2()!
main() OVER!
XG ~CDerived()!
XG ~A()!
XG ~CBase1()!
XG ~CBase2()!

代码:

#include <iostream>
using namespace std;int flag = 0;class CBase1{int x ;
public:CBase1( ) { x=0; cout<<"GZ CBase1()!"<<endl;}CBase1(int a) { x=1; cout<<"GZ CBase1(int)!"<<endl;}~CBase1( ) { cout<<"XG ~CBase1()!"<<endl;}
};class CBase2{int y;
public:CBase2( ) { y=0; cout<<"GZ CBase2()!"<<endl;}CBase2(int a) { y=a; cout<<"GZ CBase2(int)!"<<endl;}~CBase2() {cout<<"XG ~CBase2()!"<<endl;if(flag == 0){cout<<"main() OVER!"<<endl;flag += 1;}}
};class A{int x;
public:A () {x = 0; cout<<"GZ A()!"<<endl;}A(int a) { x = a; cout<<"GZ A(int)!"<<endl;}~A() {cout<<"XG ~A()!"<<endl;}
};class CDerived:public CBase1, virtual public CBase2{A a;
public:CDerived() {cout<<"GZ CDerived()!"<<endl;}CDerived(int x,int y ,int z):a(x),CBase1(y),CBase2(z){cout<<"GZ CDerived(int,int)!"<<endl;}~CDerived(){cout<<"XG ~CDerived()!"<<endl;}
};int main(){CDerived a;CDerived b(0, 0, 0);return 0;
}

6.类型兼容规则

题目:

定义一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()、fn2(),DerivedClass也有成员函数fn1()、fn2(),在主程序中定义一个DerivedClass的对象,分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1()、fn2(),观察运行结果。

主函数如下,请勿修改:

int main(){

​ DerivedClass D;

​ DerivedClass *pD=&D;

​ BaseClass *pB=&D;

​ D.fn1();

​ D.fn2();

​ pD->fn1();

​ pD->fn2();

​ pB->fn1();

​ pB->fn2();

​ return 0;

}

完成此题是如此的简单,几行代码就可搞定,但是对主函数的输出,需要你仔细的分析并掌握哦!如果反过来,给你代码,请分析并写出程序运行结果,是否ok?

【样例输出】

Call Derive fn1()
Call Derive fn2()
Call Derive fn1()
Call Derive fn2()
Call Base fn1()
Call Base fn2()

代码:

#include <iostream>
using namespace std;class BaseClass{public:void fn1(){cout<<"Call Base fn1()"<<endl;}void fn2(){cout<<"Call Base fn2()"<<endl;}
};class DerivedClass:public BaseClass{public:void fn1(){cout<<"Call Derive fn1()"<<endl;}void fn2(){cout<<"Call Derive fn2()"<<endl;}
};int main(){DerivedClass D;DerivedClass *pD = &D;BaseClass *pB = &D;D.fn1();//先调用自身的;D.fn2();pD->fn1(); //调用指针所属类里的函数pD->fn2();pB->fn1(); //如果BaseClass 里的函数前加上virtual,则调用派生类里的函数;pB->fn2();return 0;
}

7.Person类和Teacher类

题目:

从类Person中派生出一个Teacher类,新增的属性有专业(specialty)、职称(position)和主讲课程(majorCourse)一门,并为这些属性定义相应的方法。

Person类的设计如下,空白处请补充完整。

class Person{

char name[10];

int age;

char sex;

public:

void Register(char *s,int n,char c) {

_______;

age=n; sex=(c==‘m’?0:1);

}

char *getName() { _______; }

char getSex() { return sex==0?‘m’:‘f’; }

int getAge() { _______; }

void showMe() {

cout<<getName()<<" “<<getSex()<<” “<<getAge()<<” ";

}

};

Teacher类由 Person类公有派生出来,主函数设计如下,请勿修改:

int main(){

Teacher t;

t.showMe();

t.teacherRegister(“Zhang”,38,‘f’,“Computer”,“Professor”,“C++”);

t.showMe();

return 0;

}

提示:(1)Teacher类必须有自己的构造函数进行数据的初始化,而Person可以有也可以没有,当Person没有的时候,在Teacher中对Person的数据显示初始化即可。

(2)派生类在调用基类的函数时,不需要写基类名加上::。例如写Person::Register()就有点多余。

(3)派生类继承了基类的数据成员,因此,在派生类Teacher中定义数据成员Person p;是错误的写法。

【样例输出】

XXX m 0 XXX XXX XXX

Zhang f 38 Computer Professor C++

代码:

#include <iostream>
#include <cstring>
using namespace std;class Person{char name[10];int age;char sex;public:Person(){strcpy(name, "XXX");age = 0;sex = 0;}void Register(const char *s, int n, const char c) {strcpy(name, s);age = n;sex = (c == 'm' ? 0 : 1);}char *getName() {return name; }char getSex() { return sex == 0 ? 'm' : 'f'; }int getAge() { return age; }void showMe() {cout<<getName()<<" "<<getSex()<<" "<<getAge()<<" ";}
};class Teacher:public Person{char specialty[20];char position[20];char majorCourse[20];
public:Teacher(){Person();strcpy(specialty, "XXX");strcpy(position, "XXX");strcpy(majorCourse, "XXX");}void teacherRegister(const char *a, int b, const char c, const char *d, const char *e, const char *f){Register(a, b, c);strcpy(specialty, d);strcpy(position, e);strcpy(majorCourse, f);}char *getSpecialty() {return specialty; }char *getPosition() {return position; }char *getMajorCourse() {return majorCourse; }void showMe() {Person::showMe();cout<<getSpecialty()<<" "<<getPosition()<<" "<<getMajorCourse()<<" "<<endl;}
};int main(){Teacher t;t.showMe();t.teacherRegister("Zhang", 38, 'f', "Computer", "Professor", "C++");t.showMe();return 0;
}

8.Document类

题目:

定义一个Document类,有数据成员name, 从Document类派生出Book类,增加数据成员pageCount。

主函数已经提供如下,请勿修改:

int main() {

Document a(“Document1”);

Book b(“Book1”, 100);

a.PrintNameOf();

b.PrintNameOf();

}

【样例输入】


【样例输出】

Document1

Name of book: Book1

【样例说明】输出第一行为Document类对象a的名称;第二行为Book类对象b的名称。输出语句均在PrintNameOf()函数中完成。

代码:

#include <iostream>
#include <cstring>
using namespace std;class Document{public:Document(const char *n){strcpy(name, n);}char *getName() { return name; }void PrintNameOf(){cout<<getName()<<endl;}
private:char name[20];
};class Book:public Document{public:Book(const char *m, int count):Document(m){pageCount = count;}int getpageCount() { return pageCount; }void PrintNameOf(){cout<<"Name of book: ";Document::PrintNameOf();}
private:int pageCount;
};int main() {Document a("Document1");Book b("Book1", 100);a.PrintNameOf();b.PrintNameOf();return 0;
}

9.Person类、学生类、教师类和研究生类

题目:

研究生Graduate既有学生Student的属性,又有教师Teacher的属性,通过多重继承说明一个研究生类Graduate。

从前面实验题目完成的Person类派生出Teacher类,新增专业(dept)和月薪(salary)属性,并定义Teacher类的构造函数初始化新增的数据成员,showMe成员函数显示新增的数据成员的值。

再从Person类派生出Student类,新增班级(class)和学号(ID)属性,定义Student类的构造函数初始化新增的数据成员,showMe成员函数显示新增的数据成员的值。

通过“多重继承”说明一个研究生类Graduate,定义Graduate类的构造函数,定义Graduate类的showMe成员函数显示各个数据成员的值。

主函数设计如下,请勿修改:

int main(){

Graduate stu1(“Lisi”,22,‘m’,“College of Informatics”,2000,“2015013”,“S101”);

stu1.showMe();

return 0;

}

提示:(1)Graduate的父类是Student和Teacher,而Student和Teacher有共同的父类Person,如果是普通继承则姓名、性别和年龄就发生了重复。因此,这一题需要用到虚基类的概念。

(2)注意showMe()成员函数在每个类里都有。

【样例输出】

class: S101
id: 2015013
name: Lisi
sex: m
age: 22
dept: College of Informatics
salary: 2000

代码:

#include <iostream>
#include <cstring>
using namespace std;class Person{char name[10];int age;char sex;public:Person(){strcpy(name, "XXX");age = 0;sex = 0;}void Register(const char *s, int n, char c) {strcpy(name, s);age = n;sex = (c == 'm' ? 0 : 1);}char *getName() {return name; }char getSex() { return sex == 0 ? 'm' : 'f'; }int getAge() { return age; }void showMe() {cout<<getName()<<" "<<getSex()<<" "<<getAge()<<" ";}
};class Teacher:virtual public Person{char dept[30];int salary;
public:Teacher(){strcpy(dept, "xxx");salary = 0;}void Register(const char *d, int s) {strcpy(dept, d);salary = s;}char *getDept(){return dept;}int getSalary(){return salary;}void showMe(){cout<<getDept()<<" "<<getSalary();}
};class Student:virtual public Person{char clas[10];char ID[20];
public:Student(){strcpy(clas, "xxx");strcpy(ID, "xxx");}void Register(const char *id, const char *cla) {strcpy(clas, cla);strcpy(ID, id);}char *getClass(){return clas;}char *getID(){return ID;}void showMe(){cout<<getID()<<" "<<getClass();}
};class Graduate:public Teacher, public Student{public:Graduate(const char *nam,int ag, char sex, const char* dpt, int salar, const char* id, const char *cals){Person::Register(nam, ag, sex);Teacher::Register(dpt, salar);Student::Register(id, cals);};void showMe(){cout<<"class: " <<getClass()<<endl;cout<<"id: " <<getID()<<endl;cout<<"name: " <<getName()<<endl;cout<<"sex: " <<getSex()<<endl;cout<<"age: " <<getAge()<<endl;cout<<"dept: " <<getDept()<<endl;cout<<"salary: " <<getSalary()<<endl;};
};int main(){Graduate stu1("Lisi", 22, 'm', "College of Informatics", 2000, "2015013", "S101");stu1.showMe();return 0;
}

10.车类的继承与派生(虚基类)

题目:

声明一个车(vehicle)基类,具有MaxSpeed,Weight等成员变量,Run,Stop等成员函数,其中Run函数输出“Run”,Stop函数输出“Stop”。

并由此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。

再从bicycle类和motorcar类派生出摩托车(motocycle)类。

在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。主函数如下,请勿改动:

int main(){

motocycle a;

a.Run();

a.Stop();

return 0;

}

调试过程中,你是否看到了error: request for member ‘Run’ is ambiguous。请问这句话怎么翻译?

【样例输出】

Run

Stop

代码:

#include <iostream>
using namespace std;class vehicle{public:virtual void Run(){cout<<"1"<<endl;}virtual void Stop(){cout<<"2"<<endl;}private:int MaxSpeed;int Weight;
};class bicycle: public vehicle{private:int Height;
};class motorcar: public vehicle{private:int SeatNum;
};class motocycle:public bicycle, public motorcar{public:void Run(){cout<<"run"<<endl;}void Stop(){cout<<"Stop"<<endl;}
};int main(){motocycle a;a.Run();a.Stop();return 0;
}

11.Object类和Box类

题目:

定义一个Object类,有数据成员weight及相应的操作函数;由此派生出Box类,增加数据成员height和width及相应的操作函数,声明一个Box类对象。主函数如下,请勿修改:

int main() {

Object o;

o.setWeight(3);

o.print();

Box a;

a.setHeight(5);

a.setWidth(5);

a.setWeight(100);

a.print();

a.printBox();

return 0;

}

【样例输入】


【样例输出】

Weight = 3

Weight = 100

Box Weight = 100

Box Height = 5

Box Width = 5

代码:

#include <iostream>
using namespace std;class Object{public:void setWeight(int w){weight = w;}void print(){cout<<"Weight = "<<weight<<endl;}int weight;
};class Box : public Object{public:void setHeight(int h){height = h;}void setWidth(int k){width = k;}void setWeight(int w){weight = w;}void printBox(){cout<<"Box Weight = "<<weight<<endl<<"Box Height = "<<height<<endl<<"Box Width = "<<width<<endl;}
private:int height,width;
};int main() {Object o;o.setWeight(3);o.print();Box a;a.setHeight(5);a.setWidth(5);a.setWeight(100);a.print();a.printBox();return 0;
}

12.椭圆类3(复杂类的设计)

题目:

(1)在前一周作业题(椭圆类——2)的基础上,增加一个Point类(点类),包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0);

(2)给Point类增加拷贝(复制)构造函数Point(Point& p);

(3)增加析构函数~Point();输出"Point xigou"以及待析构的点的横纵坐标。

(4)增加取横纵坐标值的函数int GetX(); int GetY();

(5)删除Ellipse类原来的四个数据成员,重新修改为 Point a,b;

(6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2);注意使用冒号语法对组合成员进行构造,并在构造函数里输出“gouzao 1”和x1,y1,x2,y2的值。

(7)增加一个Ellipse类的构造函数Ellipse(Point &p1,Point &p2); 并在构造函数里输出“gouzao 2”和x1,y1,x2,y2的值。

(8)修改Ellipse的析构函数的输出内容为“Ellipse xigou”以及待析构对象的外切矩形右下角的横纵坐标。

(9)去掉Ellipse类的拷贝构造函数、Fun函数,并修改剩余函数里的错误。

【输入形式】

主函数:输入四个坐标点,用其初始化一个Ellipse对象e1。输入两对坐标点,用其初始化2个Point对象p1和p2。用p1和p2初始化一个新的Ellipse对象e2。最后调用e1和e2的Show函数分别显示坐标,调用e1和e2的Area函数计算并输出。

【输出形式】

程序运行结果

【样例输入】

-3 1 3 -1

-3 2

3 -2

【样例输出】

gouzao 1 -3 1 3 -1

gouzao 2 -3 2 3 -2

-3 1 3 -1

-3 2 3 -2

9.4245

18.849

Ellipse xigou 3 -2

Point xigou 3 -2

Point xigou -3 2

Point xigou 3 -2

Point xigou -3 2

Ellipse xigou 3 -1

Point xigou 3 -1

Point xigou -3 1

代码:

#include <iostream>
#define PI 3.1415
#include <cmath>using namespace std;class Point{public:Point(int xx = 0, int yy = 0){x = xx; y = yy;}Point(Point& p){x = p.x; y = p.y;}~Point(){cout<<"Point xigou "<<x<<" "<<y<<endl;}int GetX(){return x;}int GetY(){return y;}
private:int x,y;
};class Ellipse{public:Ellipse(int x1, int y1, int x2, int y2);Ellipse(Point &p1, Point &p2);int Getx1(){return a.GetX();}int Gety1(){return a.GetY();}int Getx2(){return b.GetX();}int Gety2(){return b.GetY();}void Show(){cout<<a.GetX()<<" "<<a.GetY()<<" "<<b.GetX()<<" "<<b.GetY()<<endl;}double Area();~Ellipse(){cout<<"Ellipse xigou "<<b.GetX()<<" "<<b.GetY()<<endl;}
private:Point a, b;
};Ellipse::Ellipse(int x1, int y1, int x2, int y2):a(x1, y1), b(x2, y2){cout<<"gouzao 1 "<<a.GetX()<<" "<<a.GetY()<<" "<<b.GetX()<<" "<<b.GetY()<<endl;
}
Ellipse::Ellipse(Point &p1, Point &p2):a(p1), b(p2){cout<<"gouzao 2 "<<a.GetX()<<" "<<a.GetY()<<" "<<b.GetX()<<" "<<b.GetY()<<endl;
}
double Ellipse::Area(){return (double) fabs(PI * (Gety1() - Gety2()) * (double)(Getx1() - Getx2()) / 4);
}int main(){int x1, y1, x2, y2;cin>>x1>>y1>>x2>>y2;Ellipse e1(x1, y1, x2, y2);cin>>x1>>y1>>x2>>y2;Point p1(x1, y1);Point p2(x2, y2);Ellipse e2(p1, p2);e1.Show();e2.Show();cout<<e1.Area()<<endl;cout<<e2.Area()<<endl;return 0;
}

欢迎提问,学弟学妹们加油~

第十二周 静态 +友元 + 动态 + 继承 + 多文件相关推荐

  1. 20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业 服务 Service的声明 Service是Android中的四大组件,使用它一定要在AndroidManifest.x ...

  2. 2019春第十二周作业

    作业头内容 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言作业评价标准 我在这个课程的目标是 学习二级指针的概念:掌握指针数组的应用方法:理解指针与函数的关系,学习指针作为函数返 ...

  3. 2019春第十二周 编程总结

    一.作业头内容 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言作业评价标准 我在这个课程的目标是 学习二级指针的概念:掌握指针数组的应用方法:理解指针与函数的关系,学习指针作为函 ...

  4. 左耳听风 第二十二周

    左耳听风 第二十二周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...

  5. 左耳听风 第四十二周

    左耳听风 第四十二周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...

  6. 20135327郭皓——信息安全系统设计基础第十二周学习总结

    第十二周(11.23-11.29): 学习计时:共6小时 读书: 代码: 作业: 博客: 一.学习目标 掌握进程控制 掌握信号处理的方法 掌握管道和fifo进行进程间通信的方法 二.学习资源  编译. ...

  7. 第十二周-学习进度条

      第十二周 所花时间(包括上课) 20h 代码量(行) 230 博客园(篇) 2 了解到的知识点 fragment的相关知识 转载于:https://www.cnblogs.com/liujinxi ...

  8. 20145240《信息安全系统设计基础》第十二周学习总结

    20145240<信息安全系统设计基础>第十二周学习总结 前三周博客链接 第九周学习总结 第十周学习总结 第十一周学习总结 视频学习内容总结 指针数组与数组指针 数组指针(也称行指针) 定 ...

  9. 大二上学期软件工程概论学习进度表(第十二周)

    第十二周 所花时间(包括上课) 四节课有4小时,自己编程3小时, 写作业2小时,实训8小时.共17小时. 代码量(行) 约400行 博客量(篇) 2篇 了解到的知识点 实现用户注册 转载于:https ...

最新文章

  1. 【javascript系列】字符串:字符串单个字符访问
  2. 最快的ASP无组件上传类(4M只需10秒)0.96版
  3. idea没有错误出现红色波浪线怎么去掉?
  4. 023_Jedis的发布和订阅
  5. redis持久化(2)
  6. fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
  7. DevExperience(1712)
  8. 1782: [Usaco2010 Feb]slowdown 慢慢游
  9. ASP.NET---操作数据库增删改查
  10. java检查页面ajax请求,Java AJAX电子邮件检验示例
  11. 【BZOJ1703】【usaco2007margold】ranking the cows 奶牛的魅力排名
  12. C语言printf()输出格式大全
  13. Aria2+Rclone教程
  14. Java XLS 转 XLSX
  15. 2017.05.22 房多多 曾熙闭门会
  16. 在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)
  17. CentOS中使用VeraCrypt(二):加密卷类型
  18. 网站频繁抓取IP被封
  19. Linux下mysql 登录退出及常用命令
  20. python之python3.x版本用urllib爬虫出现的module 'urllib' has no attribute 'urlopen'与urllib.error.HTTPError: HTT

热门文章

  1. 实验六系统安装与简单配置(Linux基础教程 第2版)虚拟机环境下安装龙蜥操作系统(Anolis OS) 8.4
  2. android仿QQ优雅的修改App字体大小
  3. plsql 英文版 修改字体,工具栏大小
  4. pc端生成支付宝支付二维码
  5. CTF学习经验分享(Web方向)
  6. 利穗IT网络工程师面试试题
  7. android微信点赞ui,Android中使用PopupWindow 仿微信点赞和评论弹出
  8. 2021-2025年中国非结构蛋白4B行业市场供需与战略研究报告
  9. csr_matrix矩阵
  10. 华为路由器选型及应用