大学计算机应用基础(面向对象部分)复习题_第1页
大学计算机应用基础(面向对象部分)复习题_第2页
大学计算机应用基础(面向对象部分)复习题_第3页
大学计算机应用基础(面向对象部分)复习题_第4页
大学计算机应用基础(面向对象部分)复习题_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学计算机应用根底〔面向对象局部〕复习题

一、选择题

4.关于成员函数,以下表达中不正确的选项是一A0

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

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

5.以下关于析构函数说法正确的选项是_Do

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='l');

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

10.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择

_A_o

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='l');

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

15、假设派生类的继承方式为私有,那么派生类自有的成员函数不能对基类的

_B_______直接访问。

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

16、以下对常量的定义中,错误的选项是_C_o

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

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、派生类中,重新定义基类的虚函数时,虚函数的_口必须保持一致。

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<stdio.h>

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。;

friendvoidf_age(intag,student&p);

private:

intage;

);

student::student(intn,char*str)

(

No二n;

Name=str;

age=18;

)

student::〜student()

cout<v"学号"v<No<Vendl;

cout<<"姓名n«Name«endl;

coutvv"年龄“vvagevVendl;

)

voidJage(intag,student&p)

(

P-age=ag;

coutvv"友元年龄"vvp.age«endl;

}

voidmain()

(

studentwang(5074401,nwangn);

Lage(30,wang);

)

3、输出一个点

#includeniostream.hn

classpoint

(

public:

point(intx,inty);

〜point。

(

cout«X«n,n«Y«endl;

)

private:

intX;

intY;

);

point::point(intx,inty)

(

X=x;

Y二y;

)

voidmain()

{pointpl(10,10);}

4、求出圆的面积:

#include<iostream.h>

classPoint

public:

Point(doublem,doublen);

virtualvoidArea();

private:

doublex,y;

);

Point::Point(doublem,doublen)

{x=m,y=n}

voidPoint::Area()

{cout«"Theareais0H«endl;}

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:"«a«endl;

)

voidmain()

(

Point*pt;

Circlec(l,2,3);

_pt=&c_____________;

pt->Area();

}

5、以下程序执行后的输出结果是80口0081口23~口~8~口~8,请将以下程

序补充完整。

classBase{

public:

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

~Base(){cout«',-B,,«x«,}

private:

intx;

);

classDerived:publicBase{

inty,z;

public:

—Derived(inti,inta=O,intb=O):Base(i){y=a;z=b;cout«/,D〃«

y«z«'';}//Constructor

_-Derived(){cout«,/〜D"<<”;}//

Destructor

);

voidmain(){

Derivedobj1;

Derivedobj2(1,2,3);

)

5、函数重载

#include<iostream.h>

intf_add(_inti,intj)

{returni+j;}

doubleCadd(_doublei,doublej)

{returni+j;}

intCadd(inti,intj,intk)

{returni+fLadd(—intj,intk);}

voidmain()

(

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

doublex=3.5,y=4.5;

inte,f;

doublez;

e=Cadd(a,b);

f=f_add(a,b,c);

z=Ladd(x,y);

cout«a«n+',«b«,,=,,«e«endl;

cout«a«',+',«b«',+',«c«'-"«f«endl;

cout«x«n+n«y«n=n«z«endl;

)

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

1.阅读程序,输入如下数据:10052,写出运行结果。

#include"stdio.h"

mainQ

(

longm,p,q,t;

p=q=0;

scanf("%ld",&m);

do

(

t=m%10;

if(t==O)p++;

else

if(q<=t)q=t;

m/=10;

}while(m);

printf(nCount=%ld,Max=%ld\nn,p,q);

)

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

#include"iostream.h"

classtest

(

private:

intnum;

floatfl;

public:

test();

intgetint(){returnnum;}

floatgetfloat(){returnfl;}

~test();

);

test::test()

(

cout«"Initalizingdefault"«endl;

num=l;fl=1.2;

)

test::~test()

{cout«nDesdtructorisactiveH«endl;}

voidmain()

testarray[2];

cout«array[l].getint()«”"«array[l].getfloat()«endl;

)

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

#include<iostream.h>

classA

(

public:

A(){cout<<”调用的无参构造函数”<<endl;}

A(intx)

{al=x;coutv<”调用的有参构造函数”<<endl;}

A(A&p)

{al=p.al;coutvv”调用的复制构造函数”《endl;}

voidadd(Aq)

(

Atemp;

temp.al=al+q.al;

cout<<"结果为:"«temp.al«endl;

)

private:

intal;

);

main()

(

AA1(1),A2(2);

Al.add(A2);

)

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

#include<iostream.h>

classadd

(

public:

virtualvoidsm()=0;

virtualvoiddisp(){}

);

classaddkpublicadd

private:

int

public:

add1(inta,intb):ml(a),nl(b){}

voidsm(){ml+=—nl;nl—;}

voiddisp()

{cout«Hml=M«ml«nn«nnl="«nl«endl;}

);

voidmain()

(

addla(4,6);

add*p=&a;

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

)

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

#include<iostream.h>

classA

(

public:

A(inti){a=i;cout«"ConstructorA.n«endl;}

-A(){cout«nDestructorA.H«endl;}

voidPrint(){cout«a«endl;}

private:

inta;

);

classB:publicA

(

public:

B(inti,intj):A(i){b=j;cout«nConstructorB,n«endl;}

-B(){cout«nDestructorB.M«endl;}

voidPrint(){A::Print();cout«b«endl;}

private:

intb;

);

classC:publicB

(

public:

C(inti,intj,intk):B(i,j),c(k)

{cout«nConstructorC.n«endl;}

-C(){cout«nDestructorC.n«endl;}

voidPrint(){A::Print();B::Print();cout«c«endl;}

private:

intc;

);

voidmain()

(

Ccl(l,2,3);

cl.Print();

)

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

#include<iostream.h>

classTest{

public:

Test(doublem,doublen,doubled):p(d){x=m;y=n;}

voidShow();

voidShow()const;

private:

doublex,y;

constdoublep;

);

voidTest::Show(){

cout<<x«",H«y«endl;

cout«np=H«p«endl;

)

voidTest::Show()const{

cout«x«","«y«Hconstu«endl;

cout«,,p=',«p«nconstn«endl;

)

voidmain(){

Testa(8.9,2.5,3.1416);

a.Show();

constTestb(2.5,8.9,3.14);

b.Show();

)

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

#include<iostream.h>

classSample

intx,y;

public:

Sample(){x=y=O;}

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

〜Sample。

(

if(x==y)

cout«"x=yn«endl;

else

cout«nx!=yn«endl;

}

voiddisp()

(

cout«"x="«x«",y="«y«endl;

)

);

voidmain()

(

Samplesl,s2(2,3);

sl.dispO;

s2.disp();

)

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

#include<iostream.h>

classPoint

(

public:

Point(doublem,doublen);

virtualvoidArea();

private:

doublex,y;

);

Point::Point(doublem,doublen)

{x=m;

y=n;

)

voidPoint::Area()

{cout«/,Theareais0,,«endl;}

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:"«a«endl;

)

voidmain()

{Point*pt;

Circlec(4,5,6);

pt=&c;

pt->Area();

)

四、编写程序

1、数列:1------1-----------1----------1—编一程序,求其前十项的和。〔画出N~S

357911

流程图)

#include<iostream>

usingnamespacestd;

intmain()

(

doublesum,m,n;

inti;

sum=l;

m=l;

n=l;

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

(

n=n+2;

if(i%2!=0)

m=-(l/n);

elsem=l/n;

sum+=m;

)

cout<<”前十项的和为:"«sum«endl;

return0;

)

2、编写一函数计算n!,调用该函数计算sinx的近似值,要求误差小于KT4,

其中:

#include<iostream>

#include<math.h>

usingnamespacestd;

intjiecheng(intn)

{

intsum=l,i;

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

(

sum=sum*i;

)

returnsum;

)

doublemain()

{

doublesinx=0,x;

intn,i;

cout<v”请输入X:";

cin»x;

cout«”请输入n:

cin»n;

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

(

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

)

cout«',sinx=n;

printf(H%10.4\nH,sinx);

return0;

}

3、定义一复数类,利用运算符重载完成复数相加。主函数及运行结果如下:

(注意:实部为real;虚部为imag,为私有数据成员)

#include<iostream.h>

classComplex

{public:

Complex()

(

real=O;

Image=0;

)

Complex(doubler,doublei):real(r),imag(i){}

Complexoperator+(Complexb&c2);

(

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

)

Voidput()

(

cout«,"("<<real<<〃:«imag«,/i)〃«endl;

)

private:

doubleraeal;

doubleimage;

);

voidmain()

{Complexcl(l,2),c2(3,4),c3;

c3=cl+c2;

c3.put();

)

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

#include<iostream.h>

#include<stdio.h>

main()

{

char*str=newchar[];

charc;

gets(str);

cin»c;

fun(str,c);

puts(str);

)

voidfun(str,c)

while(str[]!=,\O,)

(

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

deletestr[];

)

)

5、三角形的三遍,在该三角形的根底上拉伸出高为H的三棱柱,编写三棱柱

派生类,求三棱柱的体积。

三角形类描述如下:

classTriangle

(

public:

Triangle(floatx,floaty,floatz){a=x;b=y;c=z;}

voidArea()

(

floatt;

t=(a+b+c)/2;

area=sqrt(t*(t-a)*(t-b)*(t-c));

}

floatGet_area(){returnarea;}

voidShow(){cout<<”三角形的面积为:H«area«endl;}

private:

floata,b,c;

floatarea;

};

classColumn:publicTriangle

(

)

主函数如下:

main()

(

TriangleTl(3,4,5);

Tl.Area();Tl.Show();

ColumnCl(3,4,5,10);

Cl.Volume();Cl.Show();

)

答案:

#include<iostream>

#include<math.h>

usingnamespacestd;

classTriangle

(

public:

Triangle(floatx,floaty,floatz)

(

a=x;b=y;c=z;

)

vo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论