《2023年电大形成性考核册c++第四次作业及答案.doc》由会员分享,可在线阅读,更多相关《2023年电大形成性考核册c++第四次作业及答案.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机应用专业“C+语言程序设计”课程作业第四次作业一、 填空题1. 在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的_构造函数_使其初始化。2. 当一个类对象被撤消时将自动调用该类的_析构函数_。3. 对基类数据成员的初始化是通过执行派生类构造函数中的_初始化表_来实现的。4. 对一个类中的数据成员的初始化可以通过构造函数中的_初始化表_实现,也可以通过构造函数中的_赋值语句_实现。5. 在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化顺序的先基类成员,后类对象成员,最后非对象成员。6. 当撤消一个具有基类和类对象成员的派生类对象时,将一方面完毕派生类自身的析
2、构函数定义体的执行,接着完毕类对象成员的析构函数定义体的执行,最后完毕基类成员的析构函数定义体的执行。7. 设PX是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用该类的析构函数。8. 当一个类对象离开它的作用域时,系统将自动调用该类的析构函数。9. 假定一个类对象数组为AN,当离开它的作用域时,系统自动调用该类析构函数的次数为N次。10. 假定AB为一个类,则执行“AB a10;”语句时,系统自动调用该类构造函数的次数为10次。11. 假定拥护没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为空构造函数。12. 假定用户没有给一个名为AB的类定义
3、析构函数,则系统为其隐含定义的析构函数为空析构函数。13. 若需要把一个函数“void f(); ”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:friend void f();。14. 若需要把一个类AB定义为一个类CD的友元类,则应在类CD的定义中加入一条语句:friend class AB;。15. 假定一个类AB中有一个静态整型成员bb,在类外为它进行定义并初始化为0时,所使用写法为AB:bb = 0;。16. 假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员 bb的写法为AB:bb。17. 当类中一个字符指针成员指向具有n个字节的储存空间时,
4、它所能储存字符串的最大长度为n-1。18. 假定AB为一个类,则该类的拷贝构造函数的声明语句为AB:AB(AB &)。19. 对类对象成员初始化是通过执行构造函数中的初始化表完毕的。20. 对于类中定义的成员,其隐含访问权限为private,对于结构中定义的成员,其隐含访问权限为public。21. 一个类的友元函数或友元类可以通过成员操作符访问该类的所有数据成员和函数成员。22. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:AB operator +(AB, AB);。23. 在C+流类库中,根基类为ios。24. 在C+流类
5、库中,输入流类和输出流类的名称分别为istream和ostream。25. 若要在程序文献中进行标准输入输出操作,则必须在开始的#inlude命令中使用iosteam.h头文献。26. 若要在程序文献中进行文献输入输出操作,则必须在开始的#inlude命令中使用fstream.h头文献。27. 当从字符文献中读取回车和换行两个字符时,被系统看作为一个换行符。28. 当使用ifstream流类定义一个流对象并打开一个磁盘文献时,文献的隐含打开方式为 读取的文本文献,当使用ofstream 流类定义一个流对象并打开一个磁盘文献时,文献的隐含打开方式为写入的文本文献。29. 当需要使用istrstr
6、eam流类定义一个流对象并联系一个字符串时,应在文献开始使用#include命令,使之包含strstrea.h文献。二给出下列程序运营后的输出结果1#includeclass Aint a, b;public: A( ) a=b=0;A( int aa, int bb) a=aa; b=bb; couta bendl;void main( ) A x,y(6,3), z(8,10);6 38 102#includeclass Aint a, b;public:A(int aa= 0, int bb= 0): a(aa),b(bb)coutConstructor! a + bendl;void
7、main()A x, y(2,5), z(y);Constructor!0Constructor!73#includeclass Aint * a;public:A(int aa= 0)a = new int(aa);coutConstructor! * aendl;void main()A x2;A * p = new A(5);delete p;Constructor!0Constructor!0Constructor!54#includeclass Aint a;public:A(int aa= 0): a(aa)A()coutDestructor! a endl; void main(
8、)A x(5);A * p = new A(10);delete p;Destructor!10Destructor!55#includeclass A int * a;public:A(int x)a = new int(x);coutConstructor! * aendl;A()delete a;coutDestructor!endl;void main()A x(9),* p;p = new A(12);delete p;Constructor!9Constructor!12Destructor!Destructor!6#includeclass Aint a;public:A(int
9、 aa= 0): a(aa)coutConstructor A! aendl;class B:public Aint b;public:B(int aa, int bb): A(aa), b(bb)coutConstructor B! bendl;void main()B x(2,3),y(4,5);Constructor A!2Constructor B!3Constructor A!4Constructor B!57#includeclass Aint a;public:A(int aa= 0)a = aa;A()coutDestructor A! aendl;class B:public
10、 Aint b;public:B(int aa= 0, int bb= 0): A(aa)b = bb;B()coutDestructor B!bendl;void main()B x(5),y(6,7);Deconstructor B!7Deconstructor A!6Deconstructor B!0Deconstructor A!58#include#includeclass Aint a,b;char op;public:A(int aa, int bb, char ch)a = aa;b = bb;op = ch;int Comp()switch(op)case + :return
11、 a + b;case - :return a - b;case * :return a * b;case / :if(b!=0)return a/b;else exit(1);case % :if(b!=0)return a%b;else exit(1);default:exit(1);void SetA(int aa, int bb, char ch)a = aa;b = bb;op = ch;void main(void)A x(3,5,*);int a = x.Comp();x. SetA(4,9, +);a += x.Comp();x. SetA(13,8, %);a += x.Co
12、mp();couta=aendl;a=339#includeclass Bint a,b;public:B()a = b = 0;B(int aa, int bb)a = aa;b = bb;B operator +(B& x)B r;r . a = a + x . a;r . b = b + x . b;return r;B operator -(B& x)B r;r . a = a - x . a;r . b = b - x . b;return r;void OutB()cout a b endl;void main()B x(6,5),y(13,3), z1, z2;z1 = x +
13、y;z2 = x - y;z1.OutB();z2.OutB();19 8-7 210#includetemplateclass FFTT a1,a2,a3;public:FF(TT b1, TT b2, TT b3)a1 =b1;a2 =b2;a3 =b3;TT Sum()return a1 + a2 + a3;void main()FF x(8,3,4),y(5,9,11);cout x. Sum() y. Sum()endl;15 25二、 写出下列每个函数的功能1include include include void JA(char * fname) / /可以把fname所指字符串
14、作为文献标记符的文献称为fname文献ofstream fout(fname);char a20;cin a;whlie(strcmp(a,”end”)!=0)fout a a;将键盘输入的字符串(上限为19个字符)写入到fname文献中。2include include void JB(char * fname) / /可把以fname所指字符串作为文献标记符的文献称为fname文献 / /假定该文献中保存着一批字符串,每个字符串的长度均小于20。 ifstream fin(fname);char a20;int i = 0;whlie(fin a)cout a endl;i + +;fin
15、.close();cout ”i = ” i endl;将fname文献输出到标准输出流(屏幕)上,最后显示字符串的数量。3include include void JC(chat * fname, int n) / /可把以fname所指字符串作为文献标记符的文献称为fname文献ofstream fout(fname, ios : : out | ios : : binary);int x;for(int i = 0;I x;fout.write(char * )&x, sizeof(x);fout.close();从键盘输入n个数,并以二进制的方式写到fname文献中。4includeincludevoid JD(char * fname) / /可把以fname所指字符串作为文献标记符的文献称为fname文献, / /假定该文献保存着一批整数。ifstream fin(fname, ios : : in | ios : : nocreate | ios : : binary);int x, s = 0, n = 0;whlie(fin.read(char * )&x, sizeof(x)s + = x;n + +;cout n s float(s)/nendl;fin.close();输出fname文献中保存的整数的个数、总加值以及平均值。
限制150内