1、31.定义盒子Box类,要求具备如下组员:长、宽、高分别为x,y,z,可设置盒子形状;可计算盒子体积;可计算盒子的表面积。
#include
2、 int l, int h); }; int main() { Box mybox; cout << "Please Enter weight and length and hight:"; cin >> mybox.weight >> mybox.length >> mybox.hight; int box_v, box_a; mybox.box_shape(mybox.weight, mybox.length, mybox.hight); box_v = mybox.box_volume(mybox.weight, mybox.length,
3、mybox.hight); cout << "This box's volume =" << box_v << endl; box_a = mybox.box_area(mybox.weight, mybox.length, mybox.hight); cout << "This box's area = " << box_a << endl; } void Box::box_shape(int w, int l, int h) { if(w == l && l == h) cout << "This is a Cube!" << endl; else
4、 cout << "This is a cuboid!" << endl; } int Box::box_volume(int w, int l, int h) { return w * l * h; } int Box::box_area(int w, int l, int h) { return 2 * w * l + 2 * l * h + 2 * w * h; } 32. 有两个长方柱,其长、宽、高分别为:(1)30,20,10;(2)12,10,20。分别求他们的体积。编一个基于对象的程序,在类中用带参数的结构函数。 #i
5、nclude
6、 cout << "The second Box's volume = " << mybox2.volume() << endl; return 0; } Box::Box(int l, int w, int h) { length = l; weight = w; hight = h; } int Box::volume() { return (hight * weight * length); } 33. 有两个长方柱,其长、宽、高分别为:(1)12,20,25;(2)10,30,20。分别求他们的体积。编一个基于对象的程序,且定义两
7、个结构函数,其中一个有参数,一个无参数。
#include
8、30, 20); cout << "The second box's volume = " << mybox2.volume() << endl; return 0; } Box::Box() { length = 12; wight = 20; height = 25; } Box::Box(int l, int w, int h) { length = l; wight = w; height = h; } int Box::volume() { return length * wight * height; } 34
9、. 申明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。
#include 10、>cmp1(3,4);
cout< 11、float numbers."< 12、sing namespace std;
class Student
{
public:
Student(int n,int s):num(n),score(s){}
void display()
{cout< 13、stud;
for(int i=0;i<=2;p=p+1,i++)
p->display();
return 0;
}
36. 建立一个对象数组,内放5个学生的数据(学号、成绩),设置一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。初值自拟。
#include 14、
};
int main()
{
Student stud[5]={Student(01,70),Student(02,71),Student(03,72),Student(04,73),Student(05,74)};
void max(Student *);
Student *p=&stud[0];
max(p);
return 0;
}
void max(Student *arr)
{
float max_score=arr[0].score;
for(int i=0;i<5;i++)
if(max_score 15、score)
{max_score=arr[i].score;}
cout< 16、ble, double);
double get_real();
double get_image();
};
Complex operator + (Complex &, Complex &);
int main()
{
Complex s1(3, 4);
Complex s2(5, -10);
Complex c3;
c3 = s1 + s2;
std::cout << "s1 + s2 = ";
std::cout << "(" << c3.get_real() << ", " << c3.get_image() << "i)" < 17、< std::endl;
// Complex s1(3, 4);
// std::cout << s1.get_real() << std::endl;
return 0;
}
Complex::Complex(double r, double i)
{
real = r;
image = i;
}
Complex::Complex()
{
real = 0;
image = 0;
}
double Complex::get_real()
{
return real;
}
double Complex::get 18、image()
{
return image;
}
Complex operator + (Complex & s1, Complex & s2)
{
Complex c(s1.get_real() + s2.get_real(), s1.get_image() + s2.get_image());
return c;
}
39. 定义一个复数类Complex,重载运算符“+”,“—”,使之能用于复数的加,减运算,运算符重载函数作为Complex类的组员函数。编程序,分别求出两个复数之和,差。初值自拟。
#include 19、s Complex{
private:
double real;
double image;
public:
Complex();
Complex(double, double);
Complex operator + (Complex &);
Complex operator - (Complex &);
void display();
};
int main()
{
Complex s1(3, 4), s2(5, 6), c;
c = s1 + s2;
c.display();
c = s1 - s2;
20、
c.display();
return 0;
}
Complex::Complex()
{
real = 0;
image = 0;
}
Complex::Complex(double r, double i)
{
real = r;
image = i;
}
Complex Complex::operator + (Complex & s1)
{
Complex c;
c.real = s1.real + real;
c.image = s1.image + image;
return c;
}
Com 21、plex Complex::operator - (Complex & s1)
{
Complex c;
c.real = real - s1.real;
c.image = image - s1.image;
return c;
}
void Complex::display()
{
using namespace std;
cout << real << " " << image << endl;
}
40. 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量能够都是类对象,也能够其中有一个是整数,次序 22、任意。例如:c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数)。编程序,分别求两个复数之和、整数和复数之和。初值自拟。
#include 23、 &i);
friend Complex operator+(int&,Complex &);
void display();
};
Complex Complex::operator+(Complex &c)
{
return Complex(real+c.real,imag+c.imag);
}
Complex Complex::operator+(int &i)
{
return Complex(real+i,imag);
}
void Complex::display()
{
using namespace std;
cout<<" 24、"< 25、
cout<<"c1+i=";
c3.display();
return 0;
}
41. 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如c=a+b。初值自拟。
#include 26、构函数
friend Matrix operator+(Matrix &,Matrix &); //重载运算符“+”
void input(); //输入数据函数
void display(); //输出数据函数
private:
int mat[2][3];
};
Matrix::Matrix() //定义结构函数
27、
{for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
mat[i][j]=0;
}
Matrix operator+(Matrix &a,Matrix &b) //定义重载运算符“+”函数
{Matrix c;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
{c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}
return c;
}
void Matrix::input() 28、 //定义输入数据函数
{cout<<"input value of matrix:"< 29、}
int main()
{Matrix a,b,c;
a.input();
b.input();
cout< 30、rn 0;
}
42. 将运算符“+”重载为适合用于复数加法,重载函数不作为组员函数,而放在类外,作为Complex类的友元函数。初值自拟。
#include 31、Compare c1(3, 4), c2(2, 5), c3;
c3 = c1 + c2;
c3.display();
return 0;
}
Compare::Compare()
{
real = 0;
imag = 0;
}
Compare::Compare(int r, int i)
{
real = r;
imag = i;
}
void Compare::display()
{
using namespace std;
cout << real << " " << imag << "i" << endl;
32、
}
Compare operator+(Compare & c1, Compare & c2)
{
Compare c(c1.real + c2.real, c1.imag + c2.imag);
return c;
}
43. 定义一个字符串类String,用来存储不定长的字符串,重载运算符“==”,,用于两个字符串的等于比较运算。初值自拟。
44. 定义一个字符串类String,用来存储不定长的字符串,重载运算符"<",用于两个字符串的小于的比较运算。初值自拟。
45. 定义一个字符串类String,用来存储不定长的字符串,重载运算符">",用于两 33、个字符串的不小于的比较运算。初值自拟。
#include 34、string1,String &string2);
void display();
private:
char *p;
};
String::String(char *str)
{ p=str; }
void String::display()
{ cout< (String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)>0)
return true;
else
return fals 35、e;
}
bool operator<(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)<0)
return true;
else
return false;
}
bool operator==(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)==0)
return true;
else
return fals 36、e;
}
void compare(String &string1,String &string2)
{
if(operator>(string1,string2)==1)
{
string1.display();cout<<">";string2.display();}
else if(operator<(string1,string2)==1)
{
string1.display();cout<<"<";string2.display();
}
else if(operator==(string1 37、string2)==1)
{
string1.display();cout<<"=";string2.display();
}
cout< 38、string4);
return 0;
}
46. 定义一个描述学生基本情况的类,数据组员包括姓名、学号、C++成绩、英语和数学成绩,组员函数包括输出数据,求出总成绩和平均成绩。数据自拟。
#include 39、id sum_source();
void avg_source();
};
int main()
{
Student s("John", 1, 90, 80, 97);
s.sum_source();
s.avg_source();
return 0;
}
Student::Student(char * n, int i, int cs, int es, int ms)
{
name = n;
id = i;
cpp_source = cs;
eng_source = es;
math_source = ms;
}
40、
void Student::sum_source()
{
std::cout << name << " The sum of source: " <<
cpp_source+eng_source+math_source << std::endl;
}
void Student::avg_source()
{
double avg;
avg = (cpp_source + eng_source + math_source) / 3;
std::cout << "The avg of source: " << avg << std::endl;
}
41、
47. 先建立一个Point(点)类,包括数据组员x,y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据组员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,在增加数据组员h(高)。编写程序,重载运算符“<<”和“>>”,使之能够用于输出以上类对象。
#include 42、 this->y = b;
}
void setX(int a){x = a;}
void setY(int b){y = b;}
int getX(){return x;}
int getY(){return y;}
};
class Circle:public Point
{
protected:
int r;
public:
Circle(int x, int y, int r):Point(x, y){this->r = r;}
void setR(int a){r = a;}
int getR(){return 43、r;}
};
class Cylinder:public Circle
{
protected:
int h;
public:
Cylinder():Circle(0, 0, 0),h(0){}
Cylinder(int x, int y, int r, int h):Circle(x, y, r){this->h = h;}
void setH(int a){h = a;}
int getH(){return h;}
friend std::istream & operator>>(std::istream &, Cylinder &); 44、
friend std::ostream & operator<<(std::ostream &, Cylinder &);
};
std::istream & operator>>(std::istream & input, Cylinder & cc)
{
int _x, _y, _r, _h;
std::cout << "Enter the Cylinder: " << std::endl;
input >> _x >> _y >> _r >> _h;
cc.setX(_x);
cc.setY(_y);
cc.setR(_r);
cc.se 45、tH(_h);
return input;
}
std::ostream & operator<<(std::ostream & os, Cylinder & cc)
{
os << cc.getX() << cc.getY() << cc.getR() << cc.getH() << std::endl;
return os;
}
int main()
{
using namespace std;
Cylinder cc;
cin >> cc;
cout << cc;
return 0;
}
48. 写一个程序,定义抽象 46、类型Shape,由他派生三个类:Circle(圆形),Rectangle(矩形),Trapezoid(梯形),用一个函数printArea分别输出三者的面积,3个图形的数据在定义对象是给定。
#include 47、ea() const
{
return 3.14 * r * r;
}
};
class Rectangle:public Shape
{
private:
double h, w;
public:
Rectangle(double a, double b):h(a),w(b){}
virtual double area() const
{
return h * w;
}
};
class Trapezoid:public Shape
{
private:
double h, w;
public 48、
Trapezoid(double a, double b):h(a), w(b){}
virtual double area() const
{
return 0.5 * h * w;
}
};
void printArea(const Shape & c)
{
std::cout << c.area() << std::endl;
}
int main()
{
Circle c(2);
printArea(c);
Rectangle r(2, 4);
printArea(r);
Trapezoid t(3 49、 5);
printArea(t);
return 0;
}
49. 定义一个人员类Cperson,包括数据组员:姓名、编号、性别和用于输入输出的组员函数。在此基础上派生出学生类CStudent(增加成绩)和老师类Cteacher(增加教龄),并实现对学生和教师信息的输入输出。
#include 50、oid printInfor() = 0;
};
class CStudent:public Cperson
{
protected:
int course;
public:
virtual void getInfor()
{
using namespace std;
cout << "Enter the student's inforamtion" << endl;
cout << "Enter the name: ";
cin >> name ;
cout << "Enter the id: ";
cin






