1、 Cfun (m); Dfun (m+);13. 下列各种类中,不能定义对象的类是( B )。A派生类 B抽象类 C嵌套类 D虚基类14. 类中定义的成员默认为( A )访问属性。 A. public B. private C. protected D. friend15. 静态成员函数对类的数据成员访问(B )。A. 是不允许的 B. 只允许是静态数据成员 C. 只允许是非静态数据成员 D. 可允许是静态数据成员或非静态数据成员16. 在下列语句中,将函数int f_sum(int x,int y)正确重载的是( A )。 A.float f_sum(int x,int y) B.int f
2、_sum(int a,int b) C.int f_sum(int x) D.float f_sum(int a,int b)17. 下列各语句是输出字符A的,其中错误语句是( B )。Acout; Bcout.put(); Cchar ch=coutch; Dcoutput(18. 当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D )。 A. 只能是公有成员 B. 只能是保护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员19. C+语言程序中进行文件操作时应包含的头文件是( A )。Afstream.h Bmath.h Cstdl
3、ib.h Dstrstrea.h20. 在C+程序中使用的cin标识符是系统类库中定义的( A )类中的一个对象。 A. istream B. ostream C. iostream D. fstream21. 已知:char n=p;在下列表示引用的方法中,( )是正确的。 A.char &x=n; B. char &y=p; C. char &z; D.float &t=&n;22. 在( A )情况下适宜采用内联函数。A.函数代码小,频繁调用 B. 函数代码多,频繁调用 C.函数体含有递归语句 D. 函数体含有循环语句23. 如果表达式a+b中的“+”是作为友元函数重载的运算符,若采用运
4、算符函数调用格式,则可表示为( )。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(a+b)24. 执行完循环 for(i=1;i100;i+);后,i 的值为 ( B )。 A. 99 B. 100 C. 101 D. 10225. 假定一个类对象数组为An,当离开它定义的作用域时,系统自动调用该类析构函数的次数为( C )。 A. 0 B. 1 C. n D. n-126. 在C+程序中使用的cout标识符是系统类库中定义的( B C. iostream二、填空题 1. 在下面一段类定义中, Derive
5、d类是由直接基类Base 1和Base 2所派生的,Derived类包含有两个间接基类BaseBase,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。class BaseBase protected: int x;public: BaseBase() x = 1;class Base1: public BaseBase Base1()class Base2: Base2()class Derived: (1) public Base1 , (2) public Base2 Derived() void Init(int x1, in
6、t x2) (3) Base1:x=x1 ; _(4)_ Base2:x=x2 _; (5) void output() coutBase1:x Base2:endl;2. 该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。int (1) int a int x=a0; for(int i=1; ix) (2) a j+i=j ; (3) break;class A char *a; public: _(1)_ _ /定义无参构造函数,使a的值为空 A(char *aa) a=_(2)_ _; strcpy(a,aa); /用aa所指字符串初始化a所指向的动态存储空间 _(3)_
7、_ /定义析构函数,删除a所指向的动态存储空间 ;class Point private: int x, y; Point() x=y=0; Point(int x0,int y0) x=x0; y=y0; int GetX() return x; int GetY() return y; void Print() coutPoint(,y) 1 Point operator+(Point & pt,int dd); /友元函数声明 2 ; Point operator+(Point& pt,int dd) /加号操作符重载函数,实现Point类对象与整数加法 Point temp=pt; 3
8、 ; temp.y+=dd; return temp;Point operator+(Point& pt1,Point& pt2) /加号操作符重载函数,实现两个Point类对象的加法 Point temp; temp.x=pt1.x+pt2.x; 4 ; return 5 ;3. 下列程序的功能是,建立磁盘文件1.txt,从键盘输入一行字符串,以回车键结束,将其中的字母字符存放在文件1.txt中,请填空完成该程序。#includeusing namaspace std;int main()char a80; ; /定义输出流对象outfile if(!outfile1) cerr打开文件出错
9、! exit(1); ; /从键盘读入一行字符for(int i=0;ci!=0;i+) if( ) cout ;return 0;四、根据程序试写出运行结果1. #include void main( ) int i, j;int *p1, *p2;p1=&i; p2=&j ;i=3; j=6;i= j=j*p1=*p1 *p2=*p2 *p1=5; *p2=8; cout2 #include class CD char* a; int b; void Init(char* aa, int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; cha
10、r* Geta() return a; int Getb() return b; void Output() coutab void main() CD dx,dy; char a20; dx.Init(abcdef,30); strcpy(a,dx.Geta(); strcat(a,xyz dy.Init(a,dx.Getb()+20); dx.Output(); dy.Output();3. int a10; int n; A(int aa, int nn): n(nn) for(int i=0; i+) ai=aai; int Get(int i) return ai; int SumA
11、(int n) int s=0; for(int j=0; j j+) s+=aj; return s;void main() int a=2,5,8,10,15,20; A x(a,4); A y(a,6); int d=1;4; i+) d*=x.Get(i); int f=y.SumA(5);d=df=f4. class circle int r; void setr(int x) r=x; virtual void show( )=0;class area:public circle void show( ) cout这个圆的面积是:3.14*r*r ;class perimeter:
12、 void show( ) cout这个圆的周长是: 2*3.14*rshow();ob2;5. class A A( ) cout A class B B( ) cout B class C: public A C( ) cout C B b; int main ( ) C obj;6. class small_cat double weight; /普通数据成员,表示一只小猫的重量 static double total_weight;/静态数据成员,用来累计小猫的重量 static double total_number; /静态数据成员,用来累计小猫的只数 small_cat(doub
13、le w) /构造函数 weight=w; total_weight+=w; /累加小猫的重量 total_number+; /累加小猫的只数 void display() 这只小猫的重量是 weight千克n static void total_disp()total_number 只的小猫的总重量是 total_weight 千克double small_cat:total_weight=0; /静态数据成员初始化 total_number=0; /静态数据成员初始化 small_cat w1(0.5),w2(0.6),w3(0.4); w1.display(); /调用普通成员函数,显示
14、第1只小猫的重量 w2.display(); /调用普通成员函数,显示第2只小猫的重量 w3.display(); /调用普通成员函数,显示第3只小猫的重量 small_cat:total_disp(); /调用静态成员函数 return 0; /显示小猫的只数和总重量5、编程题1. 编程求圆、圆内接正方形和圈外切正方形的面积和周长。要求使用抽象类。解:const double PI=3.1415;class Shape Shape(double i) r=i; virtual void Area()=0;virtual void Perimeter()=0;double r;class Ci
15、rcle:public Shape Circle(double i):Shape(i) void Area()圆的面积是 PI*r*r void Perimeter()圆的周长是 2*PI*rclass In_Square: In_Square(double i): 圆内接正方形的面积是 2*r*r圆内接正方形的周长是 4*1.414*rclass Ex_Square: Ex_Square(double i):圆外切正方形的面积是 4*r*r圆外切正方形的周长是 8*rArea();Perimeter(); ps=new In_Square(8); ps=new Ex_Square(8); d
16、elete ps;(附上运行结果:)2. 已知复数类Complex的声明如下:class Complexpublic: Complex(); /无参构造函数 Complex(double ); /转换构造函数Complex(double, double); /有两个形参的构造函数 friend Complex operator+(Complex&, Complex& /对“+”运算符进行重载 friend ostream& operator(ostream& /对“(istream& /对“private: double real,imag;要求:(1)写出该类的所有构造函数的类外定义代码。
17、(2)写出对运算符“+”、“”进行重载的运算符重载函数的定义。3. 编写程序,计算出复数对象c1和c2相加结果,并将其结果输出。4. 从建立的数据文件f1.dat中读入10个整数放在数组中,找出并输出10个数中的最大者和它在数组中的序号。iostreamusing namespace std;int main( ) int a10,max,i,order; fstream infile(f1.dat, ios:in ); if( !infile ) cerrai ;ai max=a0; order=0; for(i=1;max) max=ai; order=i;max=maxendlorder=orderms) coutmx) mx=ai; if(ai0) return 1; else return 0;6. 根据下面类中构造函数的原型和注释写出它的类外定义。class Array int *a; /指向动态分配的整型数组空间 /记录数组长度 Array(int aa, int nn); /构造函数,利用aa数组长度nn初始化n, /利
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1