1、大学计算机应用基础面向对象部分复习题大学计算机应用基础(面向对象部分)复习题一、选择题4关于成员函数,以下叙述中不正确的是_A_ A. 成员函数一定是内联函数 B. 成员函数可以重载 C. 成员函数的参数可以设置默认值 D. 成员函数可以是另一个类的友元函数 5下列关于析构函数说法正确的是_D_。A. 析构函数可以有参数。 B. 析构函数可以重载。C. 析构函数一定被继承。 D. 析构函数无返回值。6下列对友元的描述中,正确的是_D_。A. 友元可以在类外声明和定义 B. 友元降低了程序的运行效率C. 友元不能访问类中的保护成员 D. 友元破坏了类的封装性7下面对静态成员的描述中,错误的是_C
2、_。A. 静态成员的提出是为了解决数据共享问题B. 静态数据成员的初始化在类体外进行C. 类的不同对象有不同的静态数据成员值D. 静态成员函数可以直接访问类中的静态数据成员8下列对常量的定义中,错误的是C_。A. int const size=10; B. char * const p=Good Luck;C. void const print(); D. const MyClass obj(10,10);9若有如下函数声明:void Fun(int x);,则下列_B_能与该函数进行重载。A. void Fun(int y); B. void Fun(int x,int y=1);C. in
3、t Fun(int x); D. void Fun(int) const;10为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择_A_。A. 内联函数 B. 重载函数 C. 递归函数 D. 函数模板11派生类的对象对它的基类成员中什么是可访问的(A,C)。A. 公有继承的公有成员 B. 公有继承的私有成员C. 公有继承的保护成员 D. 私有继承的公有成员12、_D_不是构造函数的特征。 A. 构造函数的函数名与本类类名相同 B. 构造函数可以重载 C. 构造函数可以设置缺省形参值 D. 构造函数必须指明返回类型13、下列函数中,_A_不是类的成员函数。 A. 友元函数 B. 拷
4、贝构造函数 C. 析构函数 D. 构造函数14、若有如下函数声明:void Fun(int x);,则下列_B_能与该函数进行重载。A. void Fun(int y); B. void Fun(int x,int y=1);C. int Fun(int x); D. void Fun(int) const;15、若派生类的继承方式为私有,则派生类自有的成员函数不能对基类的_B_直接访问。A. 公有成员 B、私有成员 C、保护成员 D、全部成员;16、下列对常量的定义中,错误的是_C_。A. int const size=10; B. char * const p=Good Luck;C. v
5、oid const print(); D. const MyClass obj(10,10);17、设置虚基类的目的是_B_。A. 简化程序 B. 消除二义性C. 实现多态 D. 减少目标代码18、已知类A,并static int a 为其公有成员,下面初始化方法正确的是_D_。A. int a=0; B. a=0;C. A():a(0); D. int A:a=0; 19、下列运算符中,不能重载的运算符是_A_。A. : B. C. & . 20、在建立派生类对象时,构造函数的执行方式为:C A. 先执行派生类构造函数后执行基类构造函数B. 只执行派生类构造函数C. 先执行基类构造函数后执行
6、派生类构造函数D. 仅执行基类构造函数21、为了提高程序的运行速度,可将不太复杂的功能用_A_函数实现。A. 内联函数 B. 重载函数 C. 递归函数 D. 函数模板22、派生类中,重新定义基类的虚函数时,虚函数的_D_必须保持一致。 A. 参数个数 B. 参数类型 C. 返回值 D. 参数个数、参数类型和返回值23. 当派生类中有和基类一样名字的成员时,一般来说 _B_。 A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员24. 如果是类B在类A的基础上构造,那么称_B_。 A.类A为基类或派生类,类B为子类或父类 B.类A为基类、父类,
7、类B为派生类或子类C.类A为派生类,类B为基类 D.类A为派生类或子类,类B为基类、父类25. 多继承派生类构造函数构造对象时,_C_最先被调用。A. 虚函数的构造函数 B. 派生类自己的构造函数C. 非虚基类的构造函数 D. 派生类中子对象类的构造函数二、 程序填空1、把一串字符中的小写字母转换为对应的大写字母。#include char fun(char c) if(c=a&c=z) _c=c+32_; return c;main() char c; c=getchar(); while(c!=n) c=_fun(c)_; putchar(c); c=_getchar(c)_; 2、友元应
8、用#include iostream.hclass studentpublic: int No; char *Name; _student()_; student(); _friend_ void f_age(int ag, student &p);private: int age;student:student(int n,char *str) No=n; Name=str; age=18;student:student () cout学号Noendl; cout姓名Nameendl; cout年龄ageendl;void f_age(int ag, student &p) p.age =a
9、g; cout友元年龄p.age endl;void main() student wang(5074401,wang); f_age(30,wang);3、输出一个点#include iostream.hclass pointpublic:point(int x,int y); point() coutX,Yendl; private: int X; int Y;point:point(int x,int y) _X=x_; _Y=y_;void main() point p1(10,10); 4、求出圆的面积:#include class Point public: Point(doubl
10、e m,double n ); virtual void Area();private: double x,y;Point:Point(double m,double n ) _ x=m,y=n _void Point: Area() coutThe area is 0endl;class Circle :public Pointpublic: Circle()_; void Area();private: double r;Circle :Circle (double m,double n, double i): Point (m,n)_ r=i;void Circle : Area() d
11、ouble a=_3.14*r*r_; coutThe area of the circle is:a Area (); 5、下列程序执行后的输出结果是B0 D00 B1 D23 D B D B,请将下列程序补充完整。class Base public:Base(int i=0) x = i; coutBx ;Base() coutBx ; private:int x;class Derived : public Base int y, z;public: _ Derived (int i,int a=0,int b=0): Base(i) y=a;z=b;cout”D”yz ;_ / Con
12、structor _ Derived () cout”D” ;_ / Destructor;void main() Derived obj1; Derived obj2(1,2,3); 5、函数重载#include int f_add(_int i,int j_) return i+j; double f_add(_double i,double j_) return i+j; int f_add(int i,int j,int k) return i+f_add(_int j,int k _); void main() int a=1,b=2,c=3; double x=3.5,y=4.5;
13、 int e,f; double z; e=f_add(a,b); f=f_add(a,b,c); z=f_add(x,y); couta+b=eendl; couta+b+c=fendl; coutx+y=zendl;三、写出下列程序的运行结果1阅读程序,输入如下数据:10052,写出运行结果。#include stdio.hmain() long m,p,q,t; p=q=0; scanf(%ld,&m); do t=m%10; if(t=0) p+; else if(q=t) q=t; m/=10; while(m); printf(Count=%ld,Max=%ldn,p,q); 2、
14、阅读程序,写出运行结果#include iostream.hclass testprivate: int num; float fl;public: test( ); int getint( )return num; float getfloat( )return fl; test( );test:test( ) cout Initalizing default endl; num=1;fl=1.2;test:test( ) coutDesdtructor is activeendl;void main( ) test array2; cout array1.getint( ) array1.
15、getfloat( ) endl;3、阅读程序,写出运行结果。#include class Apublic: A()cout调用的无参构造函数endl; A(int x) a1=x;cout调用的有参构造函数endl; A(A &p) a1=p.a1;cout调用的复制构造函数endl; void add(A q) A temp; temp.a1=a1+q.a1; cout结果为: temp.a1 endl; private: int a1;main() A A1(1),A2(2); A1.add (A2);4、分析下列程序的运行结果#include class add public: vir
16、tual void sm()=0; virtual void disp() ;class add1:public add private: int m1,n1;public: add1(int a,int b):m1(a),n1(b) void sm() m1+=-n1; n1-; void disp() coutm1=m1 n1=n1sm(); p-disp();5、阅读程序,写出运行结果#include class A public: A(int i) a=i; coutConstructor A. endl; A() coutDestructor A. endl; void Print(
17、) coutaendl; private: int a; ; class B:public A public: B(int i,int j):A(i) b=j; coutConstructor B. endl; B() coutDestructor B. endl; void Print() A:Print(); coutbendl; private: int b;class C:public Bpublic: C(int i,int j,int k):B(i,j),c(k) coutConstructor C. endl; C() coutDestructor C. endl; void P
18、rint() A:Print(); B:Print();coutcendl; private: int c;void main() C c1(1,2,3); c1.Print();6、分析下列程序,写出运行结果#include class Test public: Test (double m,double n,double d):p(d) x=m; y=n; void Show(); void Show() const;private: double x, y; const double p;void Test:Show() coutx,yendl; coutp=pendl;void Tes
19、t:Show() const coutx,y constendl; coutp=p constendl;void main() Test a(8.9,2.5,3.1416); a.Show(); const Test b(2.5,8.9,3.14); b.Show();7、分析下列程序,写出运行结果#include class Sample int x,y; public: Sample() x=y=0; Sample(int a,int b) x=a;y=b; Sample() if(x=y) coutx=yendl; else coutx!=yendl; void disp() coutx
20、=x,y=yendl; ; void main() Sample s1,s2(2,3); s1.disp(); s2.disp(); 8、分析下列程序,写出运行结果#include class Point public: Point(double m,double n ); virtual void Area();private: double x,y;Point:Point(double m,double n ) x=m; y=n;void Point: Area() cout”The area is 0”endl;class Circle :public Pointpublic: Circ
21、le (double m,double n, double i); /声明构造函数 void Area();private: double r;Circle :Circle (double m,double n, double i): Point(m,n) r=i;void Circle : Area()double a=3.14*r*r;cout”The area of the circle is:”a Area (); 四、编写程序1、已知数列: 编一程序,求其前十项的和。(画出NS流程图)#includeusing namespace std;int main() double sum,
22、m,n; int i; sum=1; m=1; n=1; for(i=1;i=9;i+) n=n+2; if(i%2!=0) m=-(1/n); else m=1/n; sum+=m; cout前十项的和为:sumendl; return 0;2、编写一函数计算n!,调用该函数计算sinx的近似值,要求误差小于,其中:#include#includeusing namespace std;int jiecheng(int n) int sum=1,i; for(i=1;i=n;i+) sum=sum*i; return sum;double main() double sinx=0,x; in
23、t n,i; coutx; coutn; for(i=1;i=n;i+) sinx=pow(-1),(i-1)*pow(x,(2i-1)/jiecheng(2i-1); coutsinx=; printf(%10.4n,sinx); return 0;3、定义一复数类,利用运算符重载完成复数相加。主函数及运行结果如下:(注意:实部为real;虚部为imag,为私有数据成员)#include class Complex public: Complex() real=0; Image=0;Complex(double r,double i):real(r),imag(i)Complex opera
24、tor+(Complexb & c2); return (real+c2.real,imag+c2.imag)Void put() cout”(“real”,”imag”i)”endl; private:double raeal;double image;void main() Complex c1(1,2),c2(3,4),c3; c3=c1+c2; c3.put();4、编写一函数把字串中与某字符相同的字符删除,主函数如下:#include #include main() char *str=new char; char c; gets(str); cinc; fun(str,c); puts(str); void fun(str,c) while(str!=0) if(strcmp(str,c)=0) delete str; 5、已知三角形的三遍,在该三角形的基础上拉伸出高为H的三棱柱,编写三棱柱派生类,求三棱柱的体积。 三角形类描述如下:cl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1