还剩7页未读,继续阅读
文本内容:
杭州电子科技大学学生考试卷A卷a.静态b.常数c.非静态d.公共
4.内联函数执行起来比标准函数面向对象程序设计20236月日成绩考试课程考试日期a.更慢b.更快c.次数更多d.以上都不是B100教师号任课教师姓名楼永坚课程号
2105.默认参数的值由提供考生姓名学号8位05051座位号年级05专业1/2/3a.该函数b.调用程序c.上述两者d.以上都不是
一、判断题15分对的打J,错的打X
6.在C++中,混合类型表达式
1.友元函数用于允许一个函数访问不相关类的私有部分a.允许存在b.为一错误c.从i n t到f1oa t d.从flal到int
2.构造函数可以被继承
7.表达式lo n gin tV ar也可表达为
3.动态绑定的多态性是通过虚函数实现的a.i nivar=long;b.i n tVardong c.I ongintV a r d.以上都不是
4.在C++中,传引用调用等同于传地址调用
8.静态数据成员的生存期
5.重载函数必须有不同的参数列表a.与整个程序相同b.不长于类的生存期
6.可以用del e t e释放不是用n ew运算符分派的内存c.取决于创建的对象数d.以上都不是
7.类成员的默认访问模式是p r i vat e
9.要让一个类中的所有对象具有共同的数据,请使用
8.在类T iin e中的析构函数可以声明为:v oid~T ime int;a.常数成员变量b.私有数据成员
9.co nst对象必须初始化c.静态数据成员d.以上都是
10.在C++中,只能重载已有的运算符
10.设立虚基类的目的是a.简化程序b.消除二义性c.提高运营效率d.减少目的代码
二、选择题20分
三、指出下列程序片段中的错误标号,写出对的语句或解释错在何处20分
1.关键字说明对象或变量初始化后不会被修改Dint index=675;1
④*ptr=555;P tr是指向整数常量的指针a.st a tic b.pub1ic c.co n st d.in1i ne
⑧n tp tr=ano t her;ntptr是常量指针,不能指向别的的变量
2.假如调用带有默认参数的函数时缺少一个参数,则参数就作为这一参数a.第一个b.最后一个c.中间一个d.以上都不是
3.成员函数可声明为静态的,条件是它不访问类成员2
①int a r r p应改为:int*a r r pclas swi ndow
③del e t e a rrp;应改为:del et e[]a rr p;3r etu r n base data;//在b or d er_an djnenu中弓|用base da t a时产protec t ed:生二义in tbasedata;性,应使用虚基类应改为};cl a ss b o rd er:vi rtual p u b lie wi nd owc1ass bord er:pu blie wi nd o w{;class menu:p u blie wi ndowc1ass menu:vir t ual publicwind ow;{;c1assb ord e r a nd_me nup ub1ic border,p ublicmenu1publ i c:©const int*pt r=ind ex;in ts how3i nt*c onst nlptr=index;{return base data;
④*ptr=555;
⑤*ntptr=666;
⑥i ntanother=8;
⑦pt r=a nother;4改正下面程序段中的错误,写出整个对的的程序段§ntptr=another;temp1at eT void p ri n tT*a2
①in tarrp;{»€ou t«a«,\n;
②a rrp=new int
[15];v o i dm a in
③d elete arrp;3下面程序为什么会编译错误,并改正错误提出解决办法c onst int x=0;a,total+=a.rate*a.tot a1;c o ut«y«,\n;ret um a.to tal;int y;i nt ma i nv oi dx=5;®int*p3A x
80.
0.5,y100,
0.2;p=y;c ou t«c ountx\«c oun ty\n;°pr i ntp;*coulcounlx\n;»re tu r n0;retur n0;}执行结果
四、写出下面程序的执行结果15分I#include iostr eam2u s i ngn amespace std;#i ncludeiostr e am cla s sA u si n g namespace s id;{f riend double c ountA;clas sCo untpub lie:p riva teA doublet,double r:tot a1t,r ate r}s tatic intcoun ter;pr iv ate:i nt obj_i d;•double total;pub Iicdoubl e rat e;d oub1e c oun tAaCount;//c onstruc tor c out«Objec tID iso bj_id«endl;s i a ticvoi d d i sp1ay_t ota1;//sta tic functionvo idd is play;-C ount://destr uctor in t mainvo id;i nt Cou nt:co unt er://de fin iti on of staticdata memberCount al;Count:Count//co ns tr uctor Count::disp1a y_total;Coun ta2,a3,a4;{Coun t::d ispla y_total;counter++;a
2.d ispla y;obj_id=counter;a
4.di sp layr et urn0;C ouni:〜Counl Z/dc s true lor}3#i nclu de iostream{u sin gnames pacc std;c oun ter;c las s B ASE cout«Obje c t nu mber«ob j_id beingde stro yed\nch ar c;vo id Co unt:d isplay_tota1//s ta ticf unction pu blie:{BAS Echar n:c n{}cout«Number ofobje cts cre ated is=Mcounter en dl;virt u a1~BASE{cou tc;}void Count::d ispla y;class DERIVEDpublic BASE{chare;叩ub1i c:public:B consich ar*n5{}»DE RIVEDcharn:BASE n+l,c n{}«•vo id PrintName{cout,,name:,«n ameend!;;〜D ERIVED{cout«c;}};;o void main int inainvoid{DERIVED eX;aB b1L ingL i;r eturn0;b
1.Prin tName://执行结果:name:Ling Li
六、编程题20分
五、程序填空10分
1.编写程序:定义抽象基类Shape,由它派生出五个派生类Circ1e圆形、Square正方形、®#inciud ei ostr eamR ec tangle长方形、Trapc zoid梯形和Triangle三角形,用虚函数分别计算各种图形的面using na me s pacestd;»clas sA积,并求出它们的和规定用基类指针数组使它的每一个元素指向一个派生类的对象注主函数中定义如下对象I Circle circl e
12.6;char na ine
[80];S quar esqua r e
3.5;public:Recta ngle rectang1e
4.5,
8.4;,A2{⑶T ra pezoidrape zoid
2.0,
4.5,
3.2;卜Tr ia ngletriangle
4.5,
8.4;®cla ssB4杭州电子科技大学学生考试卷A答案3ret urn baseda ta;〃在borde randmenu中弓|用ba se dat a时产生二义面向对象程序设计20236月H成绩性,应使用虚基类考试课程考试日期教师号任课教师姓名楼永坚应改为课程号B1002100考生姓名学号8050511座位号年级05专业class bordervirtua1p ubli cwindow位/2/3;
一、判断题15分class menu:v irt ual p ub1icwin d ow1V2X3J4X5V6X7J8X9J107;
二、选择题20分4整个对的的程序段参考1c2b3c4b5c6a7c8a9c10b#ineludei os tr eam.h//加本句
三、指出下列程序片段中的错误,并解释错在何处20分temp1atetypename T//力口lyp ename1
④*pir=555;ptr是指向整数常量的指针voidp rintT*a
⑧nip ti^anol her;nip tr是常量指针,不能指向别的的变量{#cou ta*\n;}void main2
①int arrp;应改为int*arrpinty=10//y应先声明后使用,并给初值
③delel earr p;应改为:d elete[]arrp;c onstin tx=0:cout«y«/\n;〃x=5;x为con st,去掉该句int*pp=y;p rintp;//ret urn0:main返回为void,去掉该句
四、写出下面程序的执行结果(15分){public1)Circle clou b Ie r:r adiu sr{120,120180virtual dou b1e areaco nst{r etu rn
3.14159*radius*ra dius;};protec ted:d oub Ieradius;lunber of objects created is■1lunbci*ofobjectscreatedis04ibject IDis2;ibject IDis4ibject number4being destroyedibject number3being destroyedbject nunbei*2being destroyedclass Squar e:public S hape bjectnumber1being destroyed3XY{public:S quaredoub1es:sides{|
五、程序填空:10分vir tua1d o uble ar eacons t{retur nside*sid e;}1protect edsJc public2co nst char*n3s trcpyname,n;pro tecte d:4public A或pro tecled A5A ndou b1e side;
六、编程题20分1;
1.cl ass Recta nglepub1ic Sha pc#inc1u deiostream{publi c:usin gnam espa cestd;Rect angledouble w,d ouble hwidthw,h eight h{}class Sha p e{publi c:v irtua1do uble area const{return widt h*h eig ht;}v irtual d ouble areaconst=0;pro tected:do ubIe wi dth.hei gli t}};class Circlepubl ic Shap eclass T r apezoid:public Shape{publ ic:forint i=0;i5;i++T ra pezoid doubledo ub1e b,dou bleh:topt»bo t tomt,heig hth{{are as=area s+p t[i]—area}vi rtua1doubleare aconst{return
0.5*to p+bo ttom*height;}protected:cout«totol ofa I1are as=are asendl;doub1eto p,bottom,h eight;ret urn0;class Triangle:public Shape{publie:T rian gle douh1ew,double h:widt hw,h eight h{}virtua1d oubleareaconst{re turn
0.5*width*h eight;}p rote cteddouble width.h eig ht;;int mainCi r clec ircle
12.6;S quar es quare
3.5;Rec tangle rectangle
4.
5.
8.4;Tr a pezoid tra pezoid
2.0,
4.5,
3.2;Trian g1etr iangle
4.
5.
8.4;Shape*pt
[5]={circl e、squa re.r ectangle.trapezo id.triangl e;doub1e arcas=
0.0;。