1、c+期末复习资料一、选择题:30分(考15个,有13在习题集中,考原题)二、概念题10分(习题集加课本)三、程序阅读32分四、填空题(三个选一个,会有所改动)1.在下面程序中定义了类A、A1和A2,其中A1类由A 类公有派生,A2类由A1类公有派生。上述三个类的定义并不完整,请按照要求完成下列操作,将程序补充完整。定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中将x 赋值给数据成员a。请在注释“/*1*”之后添加适当的语句。定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中将x 赋值给数据成员b,将y作为基类A的构造函数的参数传入。请在注释“/*2*”之后添加适
2、当的语句。定义类A2的构造函数,该构造函数有三个整型的参数x、y和z,在构造函数中将x 赋值给数据成员c,将y和z作为基类A1的构造函数的参数传入。请在注释“/*3*”之后添加适当的语句。完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身数据成员c的值,上述3个值在输出时以空格隔开。请在注释“/*4*”之后添加适当的语句。注意:除在指定位置添加语句之外,不要改动程序中德其他内容。程序输出结果如下:96962源程序文件清单如下:#includeclass A int a;public:_/*1*int geta( )return a;class A1:
3、public A int b;public:_/*2*int getb( )return b;class A2:public A1 int c;public:_/*3*void show( )_/*4*;void main( ) A2 a(2,6,9);couta.geta( )endl;couta.getb( )endl;a.show( );2.根据给定的程序执行结果,将下列程序补充完整 (每空2分,10分)#include #includeusing namespace std;class Student /声明基类Student public: Student(int n, string
4、 nam, char s) /基类构造函数 num=n; name=nam; sex=s; protected: int num; string name; char sex ; ;class Student1: public Student /声明派生类Student1 public: Student1(int n,string nam, char s, int a): /调用基类构造函数 /在函数体中只对派生类新增的数据成员初始化 void show( ) /根据输出结果填写输出语句 coutname: nameendl; coutsex: sexendl; coutage: ageend
5、l; private: int age; ;int main( ) Student1 stud1();/根据输出结果填写实际参数 /根据程序的运行结果调用相应的成员函数 return 0;运行结果为num:10010name:Wang-lisex:fage: 193.分析以下程序,根据输出结果完善程序。 要求: (1) 在主函数中不可以通过对象访问类中的所有数据成员。 (2) 程序的运行结果为; 3 , 6 , 9 。#include class A (1)_ /最合理的访问特征int a ;public ; A (int i = 0) a=i ;class B (2)_ /最合理的访问特征
6、int b ;public : B (int i=0 ) b=i ;class C : public A int c; B b1 ;public : (3)_/根据运行结果定义构造函数 (4)_ void show ( ) (5)_/输出c的所有的数据成员;void main ( ) C c1(3,6,9);c1 .show ( ) ;答案:1 (1)A(int x)a=x;(2)A1(int x,int y):A(y)b=x;(3)A2(int x,int y,int z):A1(y,z)c=x;(4)coutgeta() getb() cendl; 2 (1)Student (n,nam,
7、s) (2)age=a; (3)coutnum num endl; (4)10010 ,”Wang-li”,f, 19 (5)stud1.show();3(1)protected: (2)public : (3)C(int n,int m,int w):A(n),b1(m) (4)c=w; (5)couta b1.b cendl;五、编程题:(答案是个人编程,用于参考)题型1:重载1 课本149第四题1.cpp矩阵之和:1#includeusing namespace std;class Mpublic: M()a00=0;a01=0;a02=0;a10=0;a11=0;a12=0; M op
8、erator+(M b); void set(); void show();private: int a23; ;M M:operator+(M b) M c; int i,j; for(i=0;i2;i+) for(j=0;j3;j+) c.aij=aij+b.aij; return c;void M:set() int i,j; for(i=0;i2;i+) for(j=0;jaij; void M:show() int i,j; for(i=0;i2;i+) for(j=0;j3;j+) coutaijendl;int main() M a,b,c; a.set();b.set();c=
9、a+b;c.show();return 0;2#includeusing namespace std;class Mpublic: M()a00=0;a01=0;a02=0;a10=0;a11=0;a12=0; M(int a1,int a2,int a3,int a4,int a5,int a6)a00=a1;a01=a2;a02=a3;a10=a4;a11=a5;a12=a6; M operator+(M b); void set(); void show();private: int a23; ;M M:operator+(M b) M c; int i,j; for(i=0;i2;i+
10、) for(j=0;j3;j+) c.aij=aij+b.aij; return c;void M:set() int i,j; for(i=0;i2;i+) for(j=0;jaij; void M:show() int i,j; for(i=0;i2;i+) for(j=0;j3;j+) coutaijendl;int main()M a(1,2,3,4,5,6),b(1,1,1,1,1,1),c; c=a+b;c.show();return 0;3课本149第5题.cpp#include/using namespace std;class Mpublic: M()a00=0;a01=0;
11、a02=0;a10=0;a11=0;a12=0; M operator+(M b); friend ostream& operator(istream&,M &);private: int a23; ;M M:operator+(M b) M c; int i,j; for(i=0;i2;i+) for(j=0;j(istream&input,M &f) int i,j; for(i=0;i2;i+) for(j=0;jf.aij;return input; ostream& operator(ostream& output,M &f) int i,j; for(i=0;i2;i+) for(
12、j=0;j3;j+) outputf.aij; outputa; cinb;c=a+b;coutc;return 0;题型2:继承1用单一继承方式定义平面坐标体系下的点类Point,线类Line和三角形类Triangle。Line 类单一继承Point 类,另外增加第2个点坐标。Triangle类单一继承Line 类,另外增加第3个点坐标。在主函数中定义一个三角形对象,调用成员函数求出并输出三角形的3个顶点坐标,三角形的周长和面积。请设计这3个类:class Point;class Line;class Triangle;main()Triangle s1(0,0,1,1,1,0);s1.sh
13、ow1();/输出s1这个三角形的3 个顶点。s1.show2();/计算并输出s1这个三角形的周长。s1.show3();/计算并输出s1这个三角形的面积。#include#includeusing namespace std;class Pointpublic:Point( int a,int b)a1=a;a2=b;void display()couta1 a2endl; protected: int a1; int a2; ;class Line :public Pointpublic: Line(int a,int b,int c,int e) :Point(a,b) b1=c; b
14、2=e; void play() display(); coutb1 b2endl;protected: int b1; int b2;class Triangle:public Linepublic: int q; Triangle(int a,int b,int c,int e,int f,int g):Line(a,b,c,e) c1=f; c2=g; void show1(); void show2(); void show3();protected: int c1; int c2;void Triangle:show1()cout输出s1这个三角形的3 个顶点endl; play()
15、; coutc1 c2endl;void Triangle:show2() double l1,l2,l3; double q; cout计算并输出s1这个三角形的周长endl; l1=sqrt( pow(a1-b1),2) + pow(a2-b2),2) ); l2=sqrt( pow(a1-c1),2) + pow(a2-c2),2) ); l3=sqrt( pow(b1-c1),2) + pow(b2-c2),2) ); q=l1+l2+l3; coutqendl;void Triangle:show3() double s; double l1,l2,l3; double q;cout
16、计算并输出s1这个三角形的面积endl; l1=sqrt(pow(a1-b1),2) + pow(a2-b2),2) ); l2=sqrt(pow(a1-c1),2)+ pow(a2-c2),2) ); l3=sqrt(pow(b1-c1),2)+ pow(b2-c2),2) ); q=l1+l2+l3; q=q/2; s=sqrt(q*(q-l1)*(q-l2)*(q-l3); coutst;t.show1();/输出体积t.show2();/输出表面积return 0;答案:#include#define PI 3.14class Hight /定义高度类Hightpublic: High
17、t(double i=0) h=i; protected: double h;class Circle /定义圆类Circlepublic: Circle(double j=0) r=j; protected: double r;class Cylinder:public Hight,public Circle /类Cylinderpublic:friend istream & operator(istream & input,Cylinder &c); Cylinder(double i=0,double j=0):Hight(i),Circle(j) void show1(); void
18、show2();void Cylinder:show1() double v; v=PI*r*r*h;/v=3.14*r*r*h; cout 输出体积 endl; coutvendl;void Cylinder:show2()double s; s=PI*r*r*2+PI*r*2*h; / s=3.14*r*r*2+3.14*r*2*h; cout 输出表面积endl; couts(istream & input,Cylinder &c) input c.hc.r; return input; int main() Cylinder t;cint;t.show1();/输出体积t.show2();/输出表面积return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1