面向对象技术与C++考试A卷答案_第1页
面向对象技术与C++考试A卷答案_第2页
面向对象技术与C++考试A卷答案_第3页
面向对象技术与C++考试A卷答案_第4页
面向对象技术与C++考试A卷答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

一、程序填空题(共5题,每空2分,共30分)1、#include<iostream.h>classA{ (1) voidf(inti){cout<<i<<'\t';}voidg(){cout<<"g\n";}};classB:privateA{public:voidh(){cout<<"h\n";} (2) };voidmain(){Bd;d.f(6);d.h();}输出:6h参考答案:(1)public:(2)voidf(inti){A::f(i);}//cout<<i<<'\t';}2、#include<iostream.h>classp_class{intnum;public:voidset_num(intval){num=val;}voidshow_num();};voidp_class::show_num(){cout<<num<<'\t';}voidmain(){p_classob[3],*p;for(inti=0;i<3;i++)ob[i].set_num((i+1)*10); (3) ;p->show_num(); (4) ;p->show_num(); (5) ;p->show_num();}输出:203010参考答案:(3)p=&ob[1](4)p=&ob⑵(5)p=&ob[0]3、#include<iostream.h>classTdate{intmonth;intday;intyear;intIsLeapYear(){return(year%4==0&&year%100!=0)||(year%400==0);} (6) voidSet(intm,intd,inty){month=m;day=d;year=y;} (7) ;}; (8) Print(){cout<<month<<"/"<<day<<"/"<<year<<endl;if(IsLeapYear())cout<<"ThisyearIsleapyear.\n";elsecout<<"ThisyearIsnotleapyear.\n";}voidmain(){Tdatea;a.Set(2,4,2000);a.Print();}参考答案:(6)public:(7)voidPrint()(8)voidTdate::4、#include<iostream.h>classTime{public:Time(inth,intm){hours=h;minutes=m;}voidTime12(); (9) Time24(Timetime);private:inthours,minutes;}; (10) Time12(){if(hours>12){cout<<hours-12<<":"<<minutes<<"PM\n";}elsecout<<hours<<":"<<minutes<<"AM\n";}voidTime24(Timetime){cout (11) }voidmain(){TimeT1(20,30),T2(10,45);T1.Time12();Time24(T1);T2.Time12();Time24(T2);}输出:8:30PM20:3010:45AM10:45参考答案:(9)friendvoid(10)voidTime::(11)<<time.hours<<":"<<time.minutes<<endl;5、已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。ARRAY与普通一维数组区别是:其重载的运算符[]要对下标是否越界进行检查。#include"iostream.h"#include"stdlib.h"classARRAY{int*v; //指向存放数组数据的空间ints; //数组大小public:ARRAY(inta[],intn);~ARRAY(){delete[]v;}intsize(){returns;}int&operator[](intn);};ARRAY::ARRAY(inta[],intn){if(n<=0){v=NULL;s=0;return;}s=n;TOC\o"1-5"\h\zv= (12) ;for(inti=0;i<n;i++) (13) ;} (14) operator[](intn)//[]的运算符成员函数定义{if(n<0lln>=s){cerrvv"下标越界!";exit(1);}return (15) ;}参考答案:(12)newint[s](13)v[i]=a[i](14)int&ARRAY::(15)v[n]二、写出程序的运行结果(共7题,每题5分,共35分)1、 #includeviostream.h>intf(inta[][3],introw,intcol){inti,j,t=1;for(i=0;ivrow;i++)for(j=0;jvcol;j++){a[i][j]++;if(i==j)t*=a[i][j];}returnt;}voidmain(){inta[][3]={0,1,2,3,4,5,6,7,8};coutvvf(a,3,3)vvendl;}参考答案:452、 #includeviostream.h>classtest{private:intnum;public:test();intgeint("returnnum;}~test();};test::test(){cout<<"constructorisactive!"vvendl;num=0;}test::~test(){coutvv"Destructorisactive!"vvendl;}voidmain(){testx[2];coutvv"Exitingmain"vvendl;};3FistriJictorisactiue?□nstruGtorIsactive!:xitmaintestructorisactive!testructorisactive!'ressanvheytrcontinue3、#includeviostream.h>classBasel{public:Base1(inti){coutvv"Baselconstruct"vvivvendl;}};classBase2{public:Base2(intj){coutvv"Base2construct"vvjvvendl;}};classA:publicBasel,publicBase2{public:A(inta,intb,intc,intd):Base2(b),Basel(c),b2(a),bl(d){coutvv"Aconstruct:"vva+b+c+dvvendl;}private:Baselbl;Base2b2;};voidmain(){Aobj(1,2,3,4);}c:\.苯:迂+*UKt**IDetHjqKi4.raa"Estselconstruct3EaseSconstruct2Baselconstruct4fiase2construct1Actinstyuct:10Pressftn^i tocontinue4、#include<iostream.h>classLocation{public:Location(intxx=0,intyy=0){X=xx;Y=yy;cout<<"ConstructorObjectAn";}Location(Location&p) 〃复制构造函数{X=p.X;Y=p.Y;cout<<"Copy_constructorcalled."<<endl;}-Location。{cout<<X<< <<Y<<"Objectdestroyed."<<endl;}intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};voidf(Locationp){cout<<"Funtion:"<<p.GetX()<<","<<p.GetY()<<endl;}voidmain(){LocationA(1,2);f(A);}ConetpuctopObject_Copy-ConstiMJictot1calledPuntion=1,2ir2Objectdest^Gyed-1,2ObjectdestK'oved-Pressanyheytocontinue5、#include<iostream.h>classA{public:A(){cout<<"callA()\n";}virtual~A(){cout<<"call~A()\n";}};classB:publicA{char*buf;public:B(){buf=newchar[100];cout<<"callB()\n";}~B(){delete[]buf;cout<<"call~B()\n";}};voidmain(){A*p=newB;deletep;}jail 、'fill 、沖>;all啪<>fress&n_ykeytoconti.nue6、 #include"iostream.h"voidmain(){inta[3]⑶={1234^,6,7,8,9};coutvv*(a[1]+2);}参考答案:67、 #includeviostream.h>classBclass{public:Bclass(inti,intj){x=i;y=j;}virtualintfun(){return0;}intgetx(){returnx;}intgety(){returny;}protected:intx,y;};classIclass:publicBclass{public:Iclass(inti,intj,intk):Bclass(i,j){z=k;}intfun(){return(x+y+z)/3;}intgetz(){returnz;}private:intz;};voidmain(){Iclassobj(2,4,10);Bclasspl=obj;cout<<p1.fun()<<endl;Bclass&p2=obj;cout<<p2.fun()<<endl;cout<<p2・Bclass::fun()<<endl;Bclass*p3=&obj;cout<<p3->fun()<<endl;cout«((Idass*)p3)->getz()«endl;}三编程题(1、2每小题10分,第3题15分,共35分):1、用面向对象的方法,编程实现求100~300以内的所有素数。参考答案#includeviostream・h>#include"math.h"classA{intm,n;public:A(intmm=100,intnn=300){m=mm;n=nn;}voidsushu();};voidA::sushu(){intx,i,flag;for(x=m;x<=n;x++){flag=1; /*设置标志*/for(i=2;i<=sqrt(x);i++)if(x%i==0){flag=0;break;} /*改变标志*/if(flag==0)continue; /*判断标志*/coutvvxvv"\t";}};voidmain(){Aa(100,300);a.sushu();}2、利用静态数据成员的概念,编写一个类,可以统计目前存在多少个该类的对象,并在主程序中使用这个类。#include"iostream.h"classcounter{staticint num;//(1分)public:counter(){num=num+1;cout<<num<<"";}//每创建一个对象num加1//(2分)~counter(){num=num-1;cout<<num<<"";}//每删除一个对象num减1//(2分)};int counter::num=0;//(2分)voidmain(){cout<<endl;countera,b,c; cout<<endl;}//(3分)3、定义一个字符串类String,分别用成员函数和友元函数重载运算符“+”实现2个字符串连接。#include"iostream.h"#include<str

温馨提示

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

评论

0/150

提交评论