2022年电大形成性考核册c第四次作业及答案.docx
精选学习资料 - - - - - - - - - 运算机应用专业 “ C+ 语言程序设计 ” 课程作业第四次作业一、填空题1.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的_ 构造函数 _ 使其初始化;2. 当一个类对象被撤消时将自动调用该类的 _ 析构函数 _;3. 对基类数据成员的初始化是通过执行派生类构造函数中的 _ 初始化表 _ 来实现的;4. 对一个类中的数据成员的初始化可以通过构造函数中的 _ 初始化表 _ 实现,也可以通过构造函数中的 _ 赋值语句 _ 实现;5. 在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序的先 基类成员 ,后 类对象成员 ,最终 非对象成员 ;6. 当撤消一个含有基类和类对象成员的派生类对象时,将第一完成 派生类本身 的析构函数定义体的执行,接着完成 类对象成员 的析构函数定义体的执行,最终完成 基类成员 的析构函数定义体的执行;7.设 PX 是指向一个类动态对象的指针变量,就执行“delete px ;” 语句时,将自动调用该类的 析构函数 ;8. 当一个类对象离开它的作用域时,系统将自动调用该类的 析构函数 ;9. 假定一个类对象数组为 AN ,当离开它的作用域时,系统自动调用该类析构函数的次数为 N 次;10.假定 AB 为一个类,就执行“ABa10; ”语句时,系统自动调用该类构造函数的次数为 10 次;11.假定拥护没有给一个名为AB 的类定义构造函数,就系统为其隐含定义的构造函数为空构造函数 ;12.假定用户没有给一个名为AB 的类定义析构函数,就系统为其隐含定义的析构函数为空析构函数 ;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 个字节的储存空间时,它所能储存字符串的最大长度为 n-1 ;18. 假定 AB 为一个类,就该类的拷贝构造函数的声明语句为 AB:ABAB &;19. 对类对象成员初始化是通过执行构造函数中的 初始化表 完成的;20. 对于类中定义的成员,其隐含拜访权限为 private,对于结构中定义的成员,其隐1 / 8 名师归纳总结 - - - - - - -第 1 页,共 8 页精选学习资料 - - - - - - - - - 含拜访权限为 public ;21.一个类的友元函数或友元类能够通过成员操作符拜访该类的全部数据成员和函数成员;22. 假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返回相加结果,就该成员函数的声明语句为:AB operator +AB, AB;23. 在 C+ 流类库中,根基类为 ios ;24. 在 C+ 流类库中,输入流类和输出流类的名称分别为 istream 和 ostream;25. 如要在程序文件中进行标准输入输出操作,就必需在开头的 #inlude 命令中使用iosteam.h 头文件;26. 如要在程序文件中进行文件输入输出操作,就必需在开头的 #inlude 命令中使用fstream.h 头文件;27. 当从字符文件中读取回车和换行两个字符时,被系统看作为一个 换行符 ;28. 当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 读取的文本文件,当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 写入的文本文件;29. 当需要使用 istrstream 流类定义一个流对象并联系一个字符串时,应在文件开头使用 #include 命令,使之包含 strstrea.h 文件;二给出以下程序运行后的输出结果1 #include<iostream.h> class A int a, b;public: A a=b=0; A int aa, int bb a=aa ; b=bb;<<b<<endl ;cout<<a<< ;void main A x,y6,3, z8,10; 6 3 8 10 2#include<iostream.h> class A int a, b;public: Aint aa= 0, int bb= 0: aaa,bbb cout<<"Constructor!"<< a + b<<endl; ;2 / 8 名师归纳总结 - - - - - - -第 2 页,共 8 页精选学习资料 - - - - - - - - - void main A x, y2,5, zy; Constructor.0 Constructor.7 3 #include<iostream.h> class A int * a;public: Aint aa= 0 a = new intaa;!"<< * a<<endl;cout<<"Constructor ;void main A x2;A * p = new A5;delete p; Constructor.0 Constructor.0 Constructor.5 4#include<iostream.h> class A int a ;public: Aint aa= 0: aaa Acout<<"Destructor!"<< a <<endl; ;void main A x5;A * p = new A10;delete p; Destructor.10 Destructor.5 5 #include<iostream.h> class A int * a;3 / 8 名师归纳总结 - - - - - - -第 3 页,共 8 页精选学习资料 - - - - - - - - - public: Aint x a = new intx;!"<< * a<<endl;cout<<"Constructor Adelete a; cout<<"Destructor! "<<endl; ;void main A x9,* p;p = new A12;delete p; Constructor.9 Constructor.12 Destructor. Destructor. 6#include<iostream.h> class A int a ;public: Aint aa= 0: aaa cout<<"Constructor A!"<< a<<endl; ;class B:public A int b ;public: Bint aa, int bb: Aaa, bbb cout<<"Constructor B!"<< b<<endl; ;void main B x2,3,y4,5; Constructor A.2 Constructor B.3 4 / 8 名师归纳总结 - - - - - - -第 4 页,共 8 页精选学习资料 - - - - - - - - - Constructor A.4 Constructor B.5 7 #include<iostream.h> class A int a ;public: Aint aa= 0a = aa; !"<< a<<endl; Acout<<"Destructor A ;class B:public A int b ;public: Bint aa= 0, int bb= 0: Aaab = bb; ; Bcout<<"Destructor B!"<<b<<endl ;void main B x5,y6,7; Deconstructor B.7 Deconstructor A.6 Deconstructor B.0 Deconstructor A.5 8 #include<iostream.h> #include<stdlib.h> class A int a,b;char op;public: Aint aa, int bb, char cha = aa;b = bb;op = ch; int Comp switchop case '+' :return a + b;else exit1;case '-' :return a - b;case '*' :return a * b;case '/' :ifb.=0return a/bcase '%' :ifb.=0return a%b;else exit1default:exit1; void SetAint aa, int bb, char ch 5 / 8 名师归纳总结 - - - - - - -第 5 页,共 8 页精选学习资料 - - - - - - - - - a = aa;b = bb;op = ch; ;void mainvoid A x3,5,'*';int a = x.Comp;x. SetA4,9, '+';a += x.Comp;x. SetA13,8, '%';a += x.Comp;cout<<"a="<<a<<endl; a=33 9 #include<iostream.h> class B int a,b;public: Ba = b = 0; ;b = bb; Bint aa, int bba = aa 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 x6,5,y13,3, z1, z2;6 / 8 名师归纳总结 - - - - - - -第 6 页,共 8 页精选学习资料 - - - - - - - - - z1 = x + y; z2 = x - y; z1.OutB; z2.OutB; 19 8 -7 2 10 #include<iostream.h> template<class TT> class FF TT a1,a2,a3;public: FFTT b1, TT b2, TT b3 a1 =b1;a2 =b2;a3 =b3; TT Sumreturn a1 + a2 + a3; ;void main FF< int > x8,3,4,y5,9,11;cout<< x. Sum<< ' ' << y. Sum<<endl; 15 25 二、写出以下每个函数的功能1 include<iomanip.h> include<fstream.h> include<string.h> void JA(char * fname)fname文件 / /可以把 fname所指字符串作为文件标识符的文件称为ofstream fout(fname );char a20;cin>> a;whlie (strcmp(a, ”end ”)! =0 )fout<< a << endl;cin>> a;将键盘输入的字符串(上限为19 个字符)写入到fname文件中;2 include<iomanip.h> include<fstream.h> void JB(char * fname)fname文件 / /可把以 fname所指字符串作为文件标识符的文件称为 / /假定该文件中储存着一批字符串,每个字符串的长度均小于20 ;7 / 8 名师归纳总结 - - - - - - -第 7 页,共 8 页精选学习资料 - - - - - - - - - ifstream fin( fname );char a20;int i = 0;whlie (fin>> a)cout<< a <<endl;i + +;fin.close();”<< i <<endl;cout<< ”i = 将 fname 文件输出到标准输出流(屏幕)上,最终显示字符串的数量;3 include<iomanip.h> include<fstream.h> void JC(chat * fname, int n)fname文件 / /可把以 fname所指字符串作为文件标识符的文件称为ofstream fout(fname, ios : : out | ios : : binary);int x ;for (int i = 0; I<n ;I + +)(x );cin>> x;)&x, sizeoffout.write( char * fout.close();从键盘输入n 个数,并以二进制的方式写到fname文件中;4 include<iomanip.h> include<fstream.h> void 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 << (s)/n<<endl;fin.close();输出 fname 文件中储存的整数的个数、总加值以及平均值;8 / 8 名师归纳总结 - - - - - - -第 8 页,共 8 页