C++程序设计与应用基础第二章 类和对象习题答案
1、请完成下列填空题
1)在C语言中,编程的单位是___函数__:在C++语言中,编程的单位是____类__。
2)在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。 #include
——MyClass(int a){x=a;}//为x置值 ——int GetNum(){return x;} //取x值 private: int x; };
void main() {
Myclass my(10);
Cout< 3)在类中定义和实现的函数称为__内联函数_______。 4)对类中的成员函数和属性的访问是通过___public___、___protected___和___private___这 3个关键字来控制的。 5) ___new___运算符对指定类型对象动态分配内存并返回该类型的__指针___。 6)假定用户没有给一个名为MyClass的类定义构造函数,则系统对其定义的默认构造函数形式为___MyClass()_____。 2、编程题 1)定义一个复数类imaginary。用友元函数实现该类的加、减、乘和除运算。 答案: class Imaginary { public: Imaginary(float a,float b); friend Imaginary Add(Imaginary& img1,Imaginary& img2); friend Imaginary Sub(Imaginary& img1,Imaginary& img2); friend Imaginary Mul(Imaginary& img1,Imaginary& img2); friend Imaginary Div(Imaginary& img1,Imaginary& img2); private: float x,y; }; Imaginary::Imaginary(float a,float b) { x=a; y=b; } Imaginary Add(Imaginary& img1,Imaginary& img2) { float a,b; a=img1.x+img2.x; b=img1.y+img2.y; return Imaginary(a,b); } Imaginary Sub(Imaginary& img1,Imaginary& img2) { float a,b; a=img1.x-img2.x; b=img1.y-img2.y; return Imaginary(a,b); } Imaginary Mul(Imaginary& img1,Imaginary& img2) { float a,b; a=img1.x*img2.x-img1.y*img2.y; b=img1.x*img2.y+img1.y*img2.x; return Imaginary(a,b); } Imaginary Div(Imaginary& img1,Imaginary& img2) { float a,b; if((img2.x*img2.x+img2.y*img2.y)!=0) { a=(img1.x*img2.x+img1.y*img2.y)/(img2.x*img2.x+img2.y*img2.y); b=(img1.y*img2.x-img1.x*img2.y)/(img2.x*img2.x+img2.y*img2.y); return Imaginary(a,b); } else return Imaginary(0.0,0.0); } 2)定义类Rational。该类存放分数形式的有理数。要求如下所述。 (1)定义带默认参数值的构造函数,默认分数为1。 (2)定义私有变量X和Y分别存放分子和分母。同时分子分母要以最简形式存放。 例如:分数3/9应该以1/3形式存放。 (3)定义成员函数Add、sub、Mul和Div。计算结果仍然以最简形式存放。 (4)以X/Y的形式打印分数。 (5)以浮点数形式打印分数。 3)定义整数集合intset,该类包括以下函数成员 答案: #include Rational(int a=1,int b=1) { int c; c=Common_Divisor(a,b); X=a/c; Y=b/c; } Rational Add(Rational& r); Rational Sub(Rational& r); Rational Mul(Rational& r); Rational Div(Rational& r); void Print(){cout<<\ void PrintPoint(){if(Y==0) exit(0);cout<<\int Common_Divisor(int a,int b); private: int X,Y; }; Rational Rational::Add(Rational& r) { int a,b,c; a=X*r.Y +Y*r.X; b=Y*r.Y; c=Common_Divisor(a,b); return Rational(a/c,b/c); } Rational Rational::Sub(Rational& r) { int a,b,c; a=X*r.Y-Y*r.X; b=Y*r.Y; c=Common_Divisor(a,b); return Rational(a/c,b/c); } Rational Rational::Mul(Rational& r)