大学计算机应用基础面向对象部分复习题.docx

上传人:b****5 文档编号:11861699 上传时间:2023-04-06 格式:DOCX 页数:23 大小:26.44KB
下载 相关 举报
大学计算机应用基础面向对象部分复习题.docx_第1页
第1页 / 共23页
大学计算机应用基础面向对象部分复习题.docx_第2页
第2页 / 共23页
大学计算机应用基础面向对象部分复习题.docx_第3页
第3页 / 共23页
大学计算机应用基础面向对象部分复习题.docx_第4页
第4页 / 共23页
大学计算机应用基础面向对象部分复习题.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

大学计算机应用基础面向对象部分复习题.docx

《大学计算机应用基础面向对象部分复习题.docx》由会员分享,可在线阅读,更多相关《大学计算机应用基础面向对象部分复习题.docx(23页珍藏版)》请在冰豆网上搜索。

大学计算机应用基础面向对象部分复习题.docx

大学计算机应用基础面向对象部分复习题

大学计算机应用基础(面向对象部分)复习题

一、选择题

4.关于成员函数,以下叙述中不正确的是_A_____。

A.成员函数一定是内联函数B.成员函数可以重载

C.成员函数的参数可以设置默认值D.成员函数可以是另一个类的友元函数

5.下列关于析构函数说法正确的是__D______。

A.析构函数可以有参数。

B.析构函数可以重载。

C.析构函数一定被继承。

D.析构函数无返回值。

6.下列对友元的描述中,正确的是_D____。

A.友元可以在类外声明和定义B.友元降低了程序的运行效率

C.友元不能访问类中的保护成员D.友元破坏了类的封装性

7.下面对静态成员的描述中,错误的是__C__。

A.静态成员的提出是为了解决数据共享问题

B.静态数据成员的初始化在类体外进行

C.类的不同对象有不同的静态数据成员值

D.静态成员函数可以直接访问类中的静态数据成员

8.下列对常量的定义中,错误的是C_____。

A.intconstsize=10;B.char*constp="GoodLuck";

C.voidconstprint();D.constMyClassobj(10,10);

9.若有如下函数声明:

voidFun(intx);,则下列__B___能与该函数进行重载。

A.voidFun(inty);B.voidFun(intx,inty='1');

C.intFun(intx);D.voidFun(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.拷贝构造函数C.析构函数D.构造函数

14、若有如下函数声明:

voidFun(intx);,则下列_B____能与该函数进行重载。

A.voidFun(inty);B.voidFun(intx,inty='1');

C.intFun(intx);D.voidFun(int)const;

15、若派生类的继承方式为私有,则派生类自有的成员函数不能对基类的_B_______直接访问。

A.公有成员B、私有成员C、保护成员D、全部成员;

16、下列对常量的定义中,错误的是__C___。

A.intconstsize=10;B.char*constp="GoodLuck";

C.voidconstprint();D.constMyClassobj(10,10);

17、设置虚基类的目的是_B_______。

A.简化程序B.消除二义性

C.实现多态D.减少目标代码

18、已知类A,并staticinta为其公有成员,下面初始化方法正确的是__D______。

A.inta=0;B.a=0;

C.A(…):

a(0);   D.intA:

:

a=0;

19、下列运算符中,不能重载的运算符是____A____。

A.:

:

B.[]C.&&   D.>>

20、在建立派生类对象时,构造函数的执行方式为:

C

A.先执行派生类构造函数后执行基类构造函数

B.只执行派生类构造函数

C.先执行基类构造函数后执行派生类构造函数

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为基类、父类,类B为派生类或子类

C. 类A为派生类,类B为基类  D. 类A为派生类或子类,类B为基类、父类

25.多继承派生类构造函数构造对象时,__C___最先被调用。

A.虚函数的构造函数B.派生类自己的构造函数

C.非虚基类的构造函数D.派生类中子对象类的构造函数

二、程序填空

1、把一串字符中的小写字母转换为对应的大写字母。

#include

charfun(charc)

{

if(c>='a'&&c<='z')

__c=c+32_____________;

returnc;

}

main()

{

charc;

c=getchar();

while(c!

='\n')

{

c=_fun(c)______________;

putchar(c);

c=_getchar(c)______________;

}

}

 

2、友元应用

#include"iostream.h"

classstudent

{

public:

intNo;

char*Name;

____student()______________;

~student();

_____friend_____________voidf_age(intag,student&p);

private:

intage;

};

student:

:

student(intn,char*str)

{

No=n;

Name=str;

age=18;

}

student:

:

~student()

{

cout<<"学号"<

cout<<"姓名"<

cout<<"年龄"<

}

voidf_age(intag,student&p)

{

p.age=ag;

cout<<"友元年龄"<

}

voidmain()

{

studentwang(5074401,"wang");

f_age(30,wang);

}

 

3、输出一个点

#include"iostream.h"

classpoint

{

public:

point(intx,inty);

~point()

{

cout<

}

private:

intX;

intY;

};

point:

:

point(intx,inty)

{

____X=x______________;

____Y=y______________;

}

voidmain()

{pointp1(10,10);}

4、求出圆的面积:

#include

classPoint

{

public:

Point(doublem,doublen);

virtualvoidArea();

private:

doublex,y;

};

Point:

:

Point(doublem,doublen)

{____x=m,y=n________________}

voidPoint:

:

Area()

{cout<<"Theareais0"<

classCircle:

publicPoint

{

public:

Circle()____________________;

voidArea();

private:

doubler;

};

Circle:

:

Circle(doublem,doublen,doublei):

Point(m,n)_________

{r=i;}

voidCircle:

:

Area()

{

doublea=__3.14*r*r_____________;

cout<<"Theareaofthecircleis:

"<

}

voidmain()

{

Point*pt;

Circlec(1,2,3);

__pt=&c_____________;

pt->Area();

}

5、下列程序执行后的输出结果是B0D00B1D23~D~B~D~B,请将下列程序补充完整。

classBase{

public:

Base(inti=0){x=i;cout<<'B'<

~Base(){cout<<"~B"<

private:

intx;

};

classDerived:

publicBase{

inty,z;

public:

__Derived(inti,inta=0,intb=0):

Base(i){y=a;z=b;cout<<”D”<<

y<

_~Derived(){cout<<”~D”<<’‘;}______________//Destructor

};

voidmain(){

Derivedobj1;

Derivedobj2(1,2,3);

}

5、函数重载

#include

intf_add(_inti,intj______________)

{returni+j;}

doublef_add(_doublei,doublej______________)

{returni+j;}

intf_add(inti,intj,intk)

{returni+f_add(__intj,intk___________);}

voidmain()

{

inta=1,b=2,c=3;

doublex=3.5,y=4.5;

inte,f;

doublez;

e=f_add(a,b);

f=f_add(a,b,c);

z=f_add(x,y);

cout<

cout<

cout<

}

三、写出下列程序的运行结果

1.阅读程序,输入如下数据:

10052,写出运行结果。

#include"stdio.h"

main()

{

longm,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=%ld\n",p,q);

}

 

2、阅读程序,写出运行结果

#include"iostream.h"

classtest

{

private:

intnum;

floatfl;

public:

test();

intgetint(){returnnum;}

floatgetfloat(){returnfl;}

~test();

};

test:

:

test()

{

cout<<"Initalizingdefault"<

num=1;fl=1.2;

}

test:

:

~test()

{cout<<"Desdtructorisactive"<

voidmain()

{

testarray[2];

cout<

}

 

3、阅读程序,写出运行结果。

#include

classA

{

public:

A(){cout<<"调用的无参构造函数"<

A(intx)

{a1=x;cout<<"调用的有参构造函数"<

A(A&p)

{a1=p.a1;cout<<"调用的复制构造函数"<

voidadd(Aq)

{

Atemp;

temp.a1=a1+q.a1;

cout<<"结果为:

"<

}

private:

inta1;

};

main()

{

AA1

(1),A2

(2);

A1.add(A2);

}

 

4、分析下列程序的运行结果

#include

classadd

{

public:

virtualvoidsm()=0;

virtualvoiddisp(){}

};

classadd1:

publicadd

{

private:

intm1,n1;

public:

add1(inta,intb):

m1(a),n1(b){}

voidsm(){m1+=--n1;n1--;}

voiddisp()

{cout<<"m1="<

};

voidmain()

{

add1a(4,6);

add*p=&a;

p->sm();p->disp();

}

5、阅读程序,写出运行结果

#include

classA

{

public:

A(inti){a=i;cout<<"ConstructorA."<

~A(){cout<<"DestructorA."<

voidPrint(){cout<

private:

inta;

};

classB:

publicA

{

public:

B(inti,intj):

A(i){b=j;cout<<"ConstructorB."<

~B(){cout<<"DestructorB."<

voidPrint(){A:

:

Print();cout<

private:

intb;

};

classC:

publicB

{

public:

C(inti,intj,intk):

B(i,j),c(k)

{cout<<"ConstructorC."<

~C(){cout<<"DestructorC."<

voidPrint(){A:

:

Print();B:

:

Print();cout<

private:

intc;

};

voidmain()

{

Cc1(1,2,3);

c1.Print();

}

6、分析下列程序,写出运行结果

#include

classTest{

public:

Test(doublem,doublen,doubled):

p(d){x=m;y=n;}

voidShow();

voidShow()const;

private:

doublex,y;

constdoublep;

};

voidTest:

:

Show(){

cout<

cout<<"p="<

}

voidTest:

:

Show()const{

cout<

cout<<"p="<

}

voidmain(){

Testa(8.9,2.5,3.1416);

a.Show();

constTestb(2.5,8.9,3.14);

b.Show();

}

7、分析下列程序,写出运行结果

#include

classSample

{

intx,y;

public:

Sample(){x=y=0;}

Sample(inta,intb){x=a;y=b;}

~Sample()

{

if(x==y)

cout<<"x=y"<

else

cout<<"x!

=y"<

}

voiddisp()

{

cout<<"x="<

}

};

voidmain()

{

Samples1,s2(2,3);

s1.disp();

s2.disp();

}

8、分析下列程序,写出运行结果

#include

classPoint

{

public:

Point(doublem,doublen);

virtualvoidArea();

private:

doublex,y;

};

Point:

:

Point(doublem,doublen)

{x=m;

y=n;

}

voidPoint:

:

Area()

{cout<<”Theareais0”<

classCircle:

publicPoint

{

public:

Circle(doublem,doublen,doublei);//声明构造函数

voidArea();

private:

doubler;

};

Circle:

:

Circle(doublem,doublen,doublei):

Point(m,n)

{r=i;}

voidCircle:

:

Area()

{doublea=3.14*r*r;

cout<<”Theareaofthecircleis:

”<

}

voidmain()

{Point*pt;

Circlec(4,5,6);

pt=&c;

pt->Area();

}

 

四、编写程序

1、已知数列:

编一程序,求其前十项的和。

(画出N~S流程图)

#include

usingnamespacestd;

intmain()

{

doublesum,m,n;

inti;

sum=1;

m=1;

n=1;

for(i=1;i<=9;i++)

{

n=n+2;

if(i%2!

=0)

m=-(1/n);

elsem=1/n;

sum+=m;

}

cout<<"前十项的和为:

"<

return0;

}

2、编写一函数计算n!

,调用该函数计算sinx的近似值,要求误差小于

,其中:

#include

#include

usingnamespacestd;

intjiecheng(intn)

{

intsum=1,i;

for(i=1;i<=n;i++)

{

sum=sum*i;

}

returnsum;

}

doublemain()

{

doublesinx=0,x;

intn,i;

cout<<"请输入x:

";

cin>>x;

cout<<"请输入n:

";

cin>>n;

for(i=1;i<=n;i++)

{

sinx=pow((-1),(i-1))*pow(x,(2i-1))/jiecheng(2i-1);

}

cout<<"sinx=";

printf("%10.4\n",sinx);

return0;

}

3、定义一复数类,利用运算符重载完成复数相加。

主函数及运行结果如下:

(注意:

实部为real;虚部为imag,为私有数据成员)

#include

classComplex

{public:

Complex()

{

real=0;

Image=0;

}

Complex(doubler,doublei):

real(r),imag(i){}

Complexoperator+(Complexb&c2);

{

return(real+c2.real,imag+c2.imag)

}

Voidput()

{

cout<<”(“<

}

private:

doubleraeal;

doubleimage;

};

voidmain()

{Complexc1(1,2),c2(3,4),c3;

c3=c1+c2;

c3.put();

}

4、编写一函数把字串中与某字符相同的字符删除,主函数如下:

#include

#include

main()

{

char*str=newchar[];

charc;

gets(str);

cin>>c;

fun(str,c);

puts(str);

}

voidfun(str,c)

{

while(str[]!

=’\0’)

{

if(strcmp(str[],c)==0)

deletestr[];

}

}

 

5、已知三角形的三遍,在该三角形的基础上拉伸出高为H的三棱柱,编写三棱柱派生类,求三棱柱的体积。

三角形类描述如下:

cl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1