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

下载本文档

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

文档简介

大学计算机应用基础(面向对象部分)复习题一、选择题4.关于成员函数,以下叙述中不正确的是_A_____。A.成员函数一定是内联函数B.成员函数可以重载C.成员函数的参数可以设置默认值D.成员函数可以是另一个类的友元函数5.下列关于析构函数说法正确的是__D______。A.析构函数可以有参数。C.析构函数一定被继承。B.析构函数可以重载。D.析构函数无返回值。6.下列对友元的描述中,正确的是_D____。A.友元可以在类外声明和定义C.友元不能访问类中的保护成员B.友元降低了程序的运行效率D.友元破坏了类的封装性7.下面对静态成员的描述中,错误的是__C__。A.静态成员的提出是为了解决数据共享问题B.静态数据成员的初始化在类体外进行C.类的不同对象有不同的静态数据成员值D.静态成员函数可以直接访问类中的静态数据成员8.下列对常量的定义中,错误的是C_____。A.intconstsize=10;C.voidconstprint();B.char*constp="GoodLuck";D.constMyClassobj(10,10);9.若有如下函数声明:voidFun(intx);,则下列__B___能与该函数进行重载。A.voidFun(inty);C.intFun(intx);B.voidFun(intx,inty='1');D.voidFun(int)const;10.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择_A___。A.内联函数B.重载函数C.递归函数D.函数模板11.派生类的对象对它的基类成员中什么是可访问的(A,C)。A.公有继承的公有成员C.公有继承的保护成员B.公有继承的私有成员D.私有继承的公有成员12、____D__不是构造函数的特征。A.构造函数的函数名与本类类名相同B.构造函数可以重载C.构造函数可以设置缺省形参值D.构造函数必须指明返回类型13、下列函数中,__A____不是类的成员函数。A.友元函数B.拷贝构造函数C.析构函数D.构造函数14、若有如下函数声明:voidFun(intx);,则下列_B____能与该函数进行重载。A.voidFun(inty);C.intFun(intx);B.voidFun(intx,inty='1');D.voidFun(int)const;15、若派生类的继承方式为私有,则派生类自有的成员函数不能对基类的_B_______直接访问。A.公有成员B、私有成员C、保护成员D、全部成员;16、下列对常量的定义中,错误的是__C___。A.intconstsize=10;C.voidconstprint();B.char*constp="GoodLuck";D.constMyClassobj(10,10);17、设置虚基类的目的是_B_______。A.简化程序C.实现多态B.消除二义性D.减少目标代码18、已知类A,并staticinta为其公有成员,下面初始化方法正确的是__D______。A.inta=0;B.a=0;D.intA::a=0;C.A(…):a(0);19、下列运算符中,不能重载的运算符是____A____。A.::B.[]C.&&D.>>20、在建立派生类对象时,构造函数的执行方式为:CA.先执行派生类构造函数后执行基类构造函数B.只执行派生类构造函数C.先执行基类构造函数后执行派生类构造函数D.仅执行基类构造函数21、为了提高程序的运行速度,可将不太复杂的功能用__A___函数实现。A.内联函数B.重载函数C.递归函数D.函数模板22、派生类中,重新定义基类的虚函数时,虚函数的_D______必须保持一致。A.参数个数C.返回值B.参数类型D.参数个数、参数类型和返回值23.当派生类中有和基类一样名字的成员时,一般来说_B____。A.将产生二义性C.是不能允许的B.派生类的同名成员将覆盖基类的成员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();_____friend_____________voidf_age(intag,student&p);private:intage;};student::student(intn,char*str){No=n;Name=str;age=18;}student::~student(){cout<<"学号"<<No<<endl;cout<<"姓名"<<Name<<endl;cout<<"年龄"<<age<<endl;}voidf_age(intag,student&p){p.age=ag;cout<<"友元年龄"<<p.age<<endl;}voidmain(){studentwang(5074401,"wang");f_age(30,wang);}3、输出一个点#include"iostream.h"classpoint{public:point(intx,inty);~point(){cout<<X<<","<<Y<<endl;}private:intX;intY;};point::point(intx,inty){____X=x______________;____Y=y______________;}voidmain(){pointp1(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<<"Theareais0"<<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(1,2,3);__pt=&c_____________;pt->Area();}5、下列程序执行后的输出结果是B0D00B1D23~D~B~D~B,请将下列程序补充完整。classBase{public:Base(inti=0){x=i;cout<<'B'<<x<<'';}~Base(){cout<<"~B"<<x<<'';}private:intx;};classDerived:publicBase{inty,z;public:__Derived(inti,inta=0,intb=0):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;}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<<a<<"+"<<b<<"="<<e<<endl;cout<<a<<"+"<<b<<"+"<<c<<"="<<f<<endl;cout<<x<<"+"<<y<<"="<<z<<endl;}三、写出下列程序的运行结果1.阅读程序,输入如下数据:10052,写出运行结果。#include"stdio.h"main(){longm,p,q,t;p=q=0;scanf("%ld",&m);do{t=m%10;if(t==0)p++;elseif(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"<<endl;num=1;fl=1.2;}test::~test(){cout<<"Desdtructorisactive"<<endl;}voidmain(){testarray[2];cout<<array[1].getint()<<""<<array[1].getfloat()<<endl;}3、阅读程序,写出运行结果。#include<iostream.h>classA{public:A(){cout<<"调用的无参构造函数"<<endl;}A(intx){a1=x;cout<<"调用的有参构造函数"<<endl;}A(A&p){a1=p.a1;cout<<"调用的复制构造函数"<<endl;}voidadd(Aq){Atemp;temp.a1=a1+q.a1;cout<<"结果为:"<<temp.a1<<endl;}private:inta1;};main(){AA1(1),A2(2);A1.add(A2);}4、分析下列程序的运行结果#include<iostream.h>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="<<m1<<""<<"n1="<<n1<<endl;}};voidmain(){add1a(4,6);add*p=&a;p->sm();p->disp();}5、阅读程序,写出运行结果#include<iostream.h>classA{public:A(inti){a=i;cout<<"ConstructorA."<<endl;}~A(){cout<<"DestructorA."<<endl;}voidPrint(){cout<<a<<endl;}private:inta;};classB:publicA{public:B(inti,intj):A(i){b=j;cout<<"ConstructorB."<<endl;}~B(){cout<<"DestructorB."<<endl;}voidPrint(){A::Print();cout<<b<<endl;}private:intb;};classC:publicB{public:C(inti,intj,intk):B(i,j),c(k){cout<<"ConstructorC."<<endl;}~C(){cout<<"DestructorC."<<endl;}voidPrint(){A::Print();B::Print();cout<<c<<endl;}private:intc;};voidmain(){Cc1(1,2,3);c1.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<<","<<y<<endl;cout<<"p="<<p<<endl;}voidTest::Show()const{cout<<x<<","<<y<<"const"<<endl;cout<<"p="<<p<<"const"<<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=0;}Sample(inta,intb){x=a;y=b;}~Sample(){if(x==y)cout<<"x=y"<<endl;elsecout<<"x!=y"<<endl;}voiddisp(){cout<<"x="<<x<<",y="<<y<<endl;}};voidmain(){Samples1,s2(2,3);s1.disp();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、已知数列:编一程序,求其前十项的和。(画出N~S流程图)#include<iostream>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<<"前十项的和为:"<<sum<<endl;return0;}2、编写一函数计算n!,调用该函数计算sinx的近似值,要求误差小于,其中:#include<iostream>#include<math.h>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<iostream.h>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<<”(“<<real<<”,”<<imag<<”i)”<<endl;}private:doubleraeal;doubleimage;};voidmain(){Complexc1(1,2),c2(3,4),c3;c3=c1+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[]!=’\0’){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()voidShow()private:{returnarea;}{cout<<"三角形的面积为:"<<area<<endl;}floata,b,c;floatarea;};classColumn:publicTriangle{}主函数如下:main(){TriangleT1(3,4,5);T1.Area();T1.Show();ColumnC1(3,4,5,10);C1.Volume();C1.Show();}答案:#include<iostream>#include<math.h>usingnamespacestd;classTriangle{public:Triangle(floatx,floaty,floatz){a=x;b=y;c=z;}voidArea(){floatt;t=(a+b+c)/2;area=sqr

温馨提示

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

评论

0/150

提交评论