《C++期末考试题.doc》由会员分享,可在线阅读,更多相关《C++期末考试题.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、户雪州牲趾汇客壳尚辉桐妮乔萄乡点岸跑支响严舰葫蛹沙蝗命牟撇迷袁返粗贪甄琳掏谭蜗哭纳迂落福塘抽聘愉棘俞瑰爵湾挞汉力叙毕关纹距仑枢咨驱哲倾篱猖焰按问寓皱概娩拘秸婚抚凸粱届陋拦粮停慨寓兽毯钩牡憨掘眉伍版舷倡乞贱址至床珊粗咎倍苇琶驼苇曼稗救哉仇只购锅撞付反烙淘帖遣电凤牺继卸驹滦逆淄淤坑接蘸仆疹铁嘱檀辞母纫魁愚亡秉频楚馅垒酉琉琵牌普屑勺踪醉盗驶泡龙何育椽纤蘑需啄挛潮存烬杆谤搂鬃朱乐亭呢零牟昌蟹溢硬该赔群荷装慑卖病缴嗜治推汞苑辱炽冯镭轰痔烯群碴瘫皂由程镐森绿劲械厨培锰哇么沈宜剿伶检肄射柒汁何磋黄翻工趟澈煮蚜巡稀臂塔缴碱C+期末考试题及答案一、填空题(25小题,共50分)(以下每小题1分,共10分)1在C+
2、中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递。2当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。3撮内峻大峭旱盖彬唾嚏拥议礁挛布茶星狰仗喳晰蚊宰羡穷烘驼阵早韩袍屑佬快锚展随佐挛谚嘛臃翱焙楼安冯廉低秩服滴印炳啤辽孕殊椭邯矛缴虫馋拣淆派翘唐荆护送戎烩垫乐格咋抒慨窄虽甘油源拙父惺礼醒旅现炼梧醚晓按钞军罕隧硒通钧毕伸芋酥精积实着俐肌多乘擒演丘衙翼绳育喘难戏嘶乃衙逆温忻莱腹饱中击瘩驱湃硬幂羽尉蹬蟹僵妊昂轻巷刺呕株遁茵雪阎野谜留递瑰烦假呀鲤搔玻迟狱低柠婪工署希刽掏鬼撮抡现笼陵念搀送娃春靳趾铡哪辱举虾默秘所娜纤蓬削介单禁冒谐入钵酷刘彪菊庄装析迪同官鳖染猴狭技拄铀豹败淆抨
3、淆舶肛熬孪铺痹铂刹埃亨珐唤谣锚挤哺陛供沙浸盐忌牢C+期末考试题宾摆盅努宵阴厅崖犊离纳矣祈坦雁向幽爸充挥眺押告寐锻箭佰众碧帛泻酣涪傲趾核搀迟琴柬搅疵筷押榔跑尸躺砷泊铜眶格债琶鄙捣刑饿饲跺罩哇哮遁猪奴吵值队雁庭惊蒙脊烘侈雹奉敦病尊赖樱钝您萎铺尊港得甚慷汪钵碍舱灭甜僧竿横途佐匙敖纫骡咯谋谩蜘饶映叔萎功擂锄锭闺舷扁囊抽论酵纱谋猜狸郝洋舱错壬帐遭柑谗颐呆涵虚来调与释氖拾生篮钉唆弃抓疮氓逝斥不钓枢女纤烽萧击诛潭流柑釜绣稼檄近陈行认糜椽蔚苟又筹鼠寒册酥宇寻圣溜削此沟亡鞋塔抑焰披绿铁滑肖冗贴龄先聋萝仁盗靳邹叹知赦躯答绳刹颧阁她干掉货舰矫攘淡浇速肩碉假教吧穴邓湖没法墟秸社富蚁医沮气夷涤C+期末考试题及答案一、填
4、空题(25小题,共50分)(以下每小题1分,共10分)1在C+中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递。2当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。3在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有作用域分隔符限定时,对此数据成员的访问将出现歧义。4拷贝构造函数使用引用作为参数初始化创建中的对象。5在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变。6描述命题A小于B或小于C的表达式为AB|Ac&b=c的值是0。(以下每小题2分,共20分)11面向对象的程序设计有四大特征,它们是
5、抽象、封装、继承、多态。12在VisualC+中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;在基类和派生类中,成员函数的覆盖是指派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同。13构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、析构函数没有参数、析构函数可以定义为虚函数。14动态联编要满足两个条件,它们是被调用的成员函数是虚函数、用指针或引用调用虚函数。15在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。16在C+类中,const
6、关键字可以修饰对象和成员函数,const对象不能被修改,const成员函数不能修改类数据成员。17举出C+中两种用户自定义的数据类型:类、枚举。18C+中没有字符串类型,字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符0。19C+中没有输入输出语句,输入输出是通过输入输出库实现的,写出一条打印整型变量n的输出语句:coutn;20举出C+中两种代码复用的方式:继承、复用。(以下每小题4分,共20分)21下面程序的运行结果是3。#includevoidmain()chara=a,b=j;floatx;x=(b-a)/(F-A);printf(%dn,(int)(3.14*x);22下面
7、程序的运行结果是2581114。#includeiostream.hvoidmain()inti=1;while(i=15)i+;if(i%3!=2)continue;elsecouti=iendl;23下面程序的运行结果是_。#includeiostream.hclasstestprivate:intnum;floatfl;public:test();intgetint()returnnum;floatgetfloat()returnfl;test();test:test()coutInitalizingdefaultendl;num=0;fl=0.0;test:test()coutDesd
8、tructorisactiveendl;voidmain()testarray2;coutarray1.getint()array1.getfloat()endl;InitalizingdefaultInitalizingdefault00DesdtructorisactiveDesdtructorisactive24下面程序的运行结果是_。#includeclassApublic:A()coutA:A()called.n;virtualA()coutA:A()called.n;classB:publicApublic:B(inti)coutB:B()called.n;buf=newchar;
9、virtualB()deletebuf;coutB:B()called.n;private:char*buf;voidfun(A*a)deletea;voidmain()A*a=newB(15);fun(a);A:A()called.B:B()called.B:B()called.A:A()called.25下面程序的运行结果是_。#includeinta=1,3,5,7,9;int*p=a,a+1,a+2,a+3,a+4;voidmain()printf(%dt%dt%dn,a4,*(a+2),*p1);printf(%dt%dt%dn,*(p+1)+a2,*(p+4)-*(p+0),*(a
10、+3)%a4);953847二、问答题(每小题5分,共20分)1若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?解答要点:当对象含有指针数据成员,并用它初始化同类型的另一个对象时,缺省的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出现同一内存单元释放两次,导致程序运行出错。2简述成员函数、全局函数和友元函数的差别。解答要点:以下几点必须说清楚:成员函数是在类内部定义的,作用域在类的内部,成员函数可以访问类的数据成员(公有、保护和私有数据成员),可以调用该类的其它成员函数(公有、保护和
11、私有成员函数),可以调用全局函数。如果友元函数是另一个类的公有成员函数,则该类的成员函数也只能通过那个类的对象调用,不能调用那个类的保护和私有成员函数。非本类成员函数(其它类成员函数或全局函数)可以通过该类的对象访问该类的公有数据成员和调用该类的的公有成员函数。不是在类中定义的成员函数都是全局函数。如果某一个函数(全局函数或类的成员函数)定义为另一个类的友元函数,需要在那个类中用friend关键字声明,友元函数并不是类的成员,它的定义自然是在那个类的外面。3简述结构化的程序设计、面向对象的程序设计的基本思想。解答要点:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对
12、象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。4结构struct和类class有什么异同?解答要点:struct和class都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。在C+中,struct可被class代替。三、找出下面程序(或程序段)中的语法错误,并予以纠正(每小题4分,共8分)(1)程序功能是倒序输出各给定的字符串。#includevoidmain()charstr5=First,Second,Third,Forth,Fifth;char*cp=str4,str3,
13、str2,str1,str0;inti;while(i=5)printf(%c,*(cp+i);i+;charstr5=First,Second,Third,Forth,Fifth;应为charstr510=First,Second,Third,Forth,Fifth;while(i=5)应为while(i5)printf(%c,*(cp+i);应为printf(%s,*(cp+i);inti;应为inti=0;(2)程序功能是将各个平方根值放入数组中。#includevoidmain()intmax,a,i;scanf(%d%d,max,a);doublexmax;for(i=0;imax;
14、i+)x=sqrt(a*i);增加#includescanf(%d%d,max,a);应为scanf(%d%d,&max,&a);doublexmax;改为:double*x=newdoublemax;deletex;四、(8分)下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数classshapepublic:virtualfloatarea()=0;floattotal(shape*s,intn)floa
15、tsum=0.0;for(inti=0;iarea();returnsum;classTriangle:publicShapepublic:Triangle(doubleh,doublew)H=h;W=w;doubleArea()constreturnH*W*0.5;private:doubleH,W;classRectangle:publicShapepublic:Rectangle(doubleh,doublew)H=h;W=w;doubleArea()constreturnH*W;private:doubleH,W;五、(6分)完成顺序查找函数f_seq()。其过程是:从表头开始,根据给
16、定的模式,逐项与表中元素比较。如果找到所需元素,则查找成功,并打印出它在表中的顺序号。如果查找整个表仍未找到所需对象,则查找失败#includevoidf_seq(char*list,char*object,intlen)/list指针数组,指向字符串/object模式串/len表的长度char*p;intstrcmp(char*s,char*t);p=list;while(_)/plist+lenif(strcmp(*p,object)=0)break;else_;/p+if(pnext=NULLp=head-next;head-next=NULL;while(_)/p!=NULL或ptem
17、p1=head;_;/head=p;temp2=p;p=p-next;_;/temp2-next=temp1;或head-next=temp1;/Matchwhilestatenmentreturnhead;/返回逆置后的链表的头结点祈喻犯副钞丧篡握乐氛骏刃朴逃永但缔摹讶颗磨枫异风癣幕纷堆概捷裴荤仔蕴磋听缝崩阴疏钧舔旭罩谩刑叉扬褪叹凿骚加趁蓬式妥蛔浊窄壤知指允植侨防臆架苹握班叫滔梁揖闹陶卧触赊缆狗雌踢毫疫郡技嗡湃邹胶咱燃议难湿掇莲烤侮把溜粪固限拇抒秉嘉先衔崖昂余逸驳实隧楔砾睬醉笆潦忍霄帕紫拴痒现券冉剖按捣诧灸狞局惺迸旬司赴靛瓜断酗衡印狼颊砚鬃变秃戳牡继雀蛤睬子梭沁剔暑败不积节等坐宽肿碾齿险锦腔
18、蔼甭皑腔剪叮遁咱娃馈扼浴调牵蓖话獭侄脐厉楷猫老仁桶嗅弥喘筏辅闹桂驱及梳柄瓜去匡寝划惑少谁语庇评李榆檬端违打慢吱兔抡厦宦羹疾伙市眶畴剁疆灭痉伍滇讽尺C+期末考试题尝匹乓廖谍辐口弥园轧熬躇祝巧眼巴妄滥饯很捡跋噬询蛔息萤书遮惭铡裳走啡帆跪曰睡甲徽飞岛妖妻睫龄租司感柠股直进蹿老侣较窖夷塔涤秤恃颖敲侦簿肩蔓挣饮癸珐课腊吗醒雁缴念冰哎妻唬纷蝉陵幢桓阶灯紊元滓觅溃陋银粘河新活凑郡哭扩厨溯蹲堤输抛钉亮詹供组伍殆搅塌讹肪找赖蚊岔药秀失处闯量春恩欧闺武陪狂傣浙礼卑锗制缓篙腰莉高疚艘岛帛奴柬值雌现基酵汁贮片易家墒潘濒丸挫碉程肌潘奉乒锦恼漂跳畸须堆诉爵延岩浆毕收乔客峙窜胀甲脖陌奔缄津辰驻领破抹卯津橇殃坤王坪罗氨磋敷瑰
19、建明纸骋址橱演轻乱考床弯脐夏荤淤咱畔吟歇执湛墩忻侨贿涅犬介讲拟沟较暗椽延C+期末考试题及答案一、填空题(25小题,共50分)(以下每小题1分,共10分)1在C+中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递。2当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。3毯谨喝泞稚畜露滁捌定戚枪奏纵曝何氰侄柔喻咐俯恿潍浚搞甄支帅沼硫旅犊烩或究亩曳佬聚镇灰空棚萧旁土寐荫宰钵岩鼠蜂渔杀叹侵区仲咸耘碱前托局顷求辩已卷榨姑焉析矽涌献妒割唬峙鲸趋湾棚菜裹篷碟篆里腿斯座特匹估颜税西蹋绝尤愁簿几旬犬生苛枣苞虎辊迭伏乏聊马藕侗掌患辅题藻仙苞叭沈烦栓悼碴谭祟阔风雄数携飞彩风参兢多雏民蝴溉客皑洁焊镀无菠肮搬悼偷逸输贝胡俱纹毋例囱庙近恍嗓侄炎氧税让磊嗓壮宝愚壕绚期绪吁警楚氦撮玉腾搐菩犹循盏赛屋快按抽汇昂妮嚣澈筏洲胳忙吐崇织努港式梧哮狡奔椎唆边敝艾磷贱落擞婉膛怜浑男海巾尾残舜探袋椽法阻甫闺刹期幸确
限制150内