您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C++2010-2011冬A
试卷第1页(共5页)注:教师应使用计算机处理试题的文字、公式、图表等;学生应使用水笔或圆珠笔答题。上海大学2010~2011学年冬季学期试卷A课程名:面向对象程序设计A课程号:09366046学分:5应试人声明:我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。应试人应试人学号应试人所在院系题号一二三四五六七八九得分一.选择(16分,每小题2分)1.[](多选)喷漆设备(PaintMachine)是机器设备(Machine)的一种;汽车(Automobile)有一个引擎(Engine),这是一辆桑塔纳汽车(santana),所以按面向对象程序,好的设计是:A.类PaintMachine是类Machine的基类.B.类Machine是类PaintMachine的基类.C.类Automobile有一个数据成员Engine.D.Engine是Automobile类型的对象.E.santana是Automobile类型的对象.F.Machine是PaintMachine类型的对象.2.[](多选)根据下面的调用,获取字符串数据charstr[250];boolok=getstr(str,250);设计其函数接口A.voidgetstr(charstr,intsize);B.boolgetstr(charstr[],intsize);C.boolgetstr(char*p,intsize);D.intgetstr(char*p[250],intsize);E.ok=getstr(str,200);3.[](多选)设计字符串加密和解码两个模块函数接口,好的设计是:A.voidencode(char*sEnText,constchar*sText,constchar*sKey);B.voidencode(constchar*sEnText,constchar*sText,constchar*sKey);C.charencode(constchar*sText,constchar*sKey);D.voiddecode(char*sText,constchar*sEnText,constchar*sKey);E.char*decode(char*sKey);4.[]已有定义:classBC{public:intb;voidm(){coutBC;}};classDC:publicBC{public:intd;voidm(){BC::m();coutDC;}};BCbc;DCdc;BC*pb=newDC;以下代码正确的是:A.pb-d=1;B.DC*p=pb;C.DC*pdc=(DC*)pb;pdc-d=1;5.[]上题定义的对象bc,dc分别拥有的数据成员个数是A.1和2B.1和1C.2和26.[]已有定义:classBase{….public:Base();Base(string);Base(constBase&);protected:string_name;};为派生类Derived定义构造函数,classDerived:publicBase{...};错误的实现代码是:A.Derived::Derived(){Base();}B.Derived::Derived(strings):Base(s){}C.Derived::Derived(){}D.Derived::Derived(constBase&b):Base(b){}7.[](多选)以下说法正确的是A.Windows程序和传统程序编程的一个主要区别是:传统程序是通过调用系统函数来获得用户输入,而Windows程序是通过操作系统发送的消息来处理用户输入。B.编译期绑定是在编译时,而运行期绑定是在程序运行时确定数据地址。C.名空间与类的意义相同。D.C++语言的变量声明必须写在函数代码的开头地方。E.面向对象的编程,要执行一个任务有两种方式:客户/服务器模式和委托/事件模式。8.[](多选)在委托式的事件处理模式编程的以下步骤中,若使用.NET控件,处理.NET控件预定义的事件,那几个步骤是必须的A.声明委托(声明事件签名,函数对象接口)B.事件源中定义事件数据成员C.发送者(事件源)引发事件D.接收者处理事件E.订阅事件(连接事件)二.填空(29分,1—3.9每小题2分,其它每小题1分)1.面向对象程序设计语言的主要特征是_______________________________________2.1写一段代码____________动态分配一个类型为double的存储空间,并将它的地址赋给变量ptr.2.2.指出下面代码设计的错误,第2行代码改写为___________int&db1(inti){intj=2*i;returnj;}成绩试卷第2页(共5页)3.程序填空classProfession{stringtitle;doubleavgIncom;public:______3.1_____(){}//构造函数______3.2____{this-title=title;}//构造函数intCompareIncome(Profession&profes)//与profes比较{if(this-avgIncomprofes.getavgIncom())return-1;elseif(________________3.3_____________)return1;elsereturn0;}_____3.4____gettitle(){returntitle;}doublegetavgIncom(){_____3.5______}voidsettitle(stringtitle){_____3.6_____=title;}voidsetavgIncom(doubleavgIncom){this-avgIncom=avgIncom;}};intmain(){_______3.7_____prof[2];for(inti=0;i2;i++){stringtitle;doubleavgIncom;cintitleavgIncom;prof[i].settitle(______3.8________);prof[i].setavgIncom(avgIncom);}intcomp=____3.9____(prof[1]);coutprof[0].gettitle()avgIncom比prof[1].getname();if(comp0)cout少endl;elseif(comp0)cout多endl;elsecout相同endl;return0;}4.程序填空intmain(intargc,char*argv[]){stringstr=101000.02000.0;intage=40;char*name=王伟;istringstreamistm(4.1);doubler,salary1,salary2;________________________4.2_____________doublesalary=age*r+salary1+salary2;______4.3____ostm;___4.4__姓名name工龄age工资salary;____4.5__ostm.str()endl;//显示return0;}三.阅读程序(15分,每小题3分)1.写出输出结果:________classFunc{intx;public:Func(intx){this-x=x;}intoperator()(inta){returnx*a;}};2.写出输出结果:________classB{protected:virtualvoidf(){cout”B”endl;}public:voidg(){f();}};intmyFunc(Func&f,inta){returnf(a);}intmain(){Funcfunc(2);intx=func(3);inty=myFunc(func,4);coutxyendl;return0;}classD:publicB{protected:virtualvoidf(){cout”D”endl;}};voidmain(){Dd;d.g();}试卷第3页(共5页)3.1写出下面程序有断点标号的代码行调用序列(写法举例:1,3,2,1):____________________3.2写出下面程序的输出____________________________#includeiostream#includestringusingnamespacestd;classDataRow{intn;string*cells;public:DataRow(intn){this-n=n;//1cells=newstring[n];}string&cell(intindex){returncells[index];}voidprintRow(){for(inti=0;in;i++)//2{coutcell(i)\t;}}};voidDataTable::printTable(){couttableNameendl;//6for(inti=0;icolumnN;i++){coutcolumns[i]\t;}coutendl;for(inti=0;irowN;i++){rows[i]-printRow();coutendl;}coutendl;}intmain(intargc,char*argv[]){DataTabletb(雇员表);stringcolumns[]={工号,姓名,部门};tb.setColumns(columns,3);DataRow*row1=tb.newRow();row1-cell(0)=111-11-1234;row1-cell(1)=Cruz;row1-cell(2)=ACC;DataRow*row2=tb.newRow();row2-cell(0)=213-44-5649;row2-cell(1)=Johnston;row2-cell(2)=MIS;tb.printTable();return0;}4.写出输出结果:________#includeiostream#includefstream#includealgorithm#includestring#includevectorstructStudent{stringname;intscore;};voidgetdata(vectorStudent&vec){ifstreamfile(data2010_2011.txt);Studentd;while(filed.named.score){vec.push_back(d);}}intmain(intargc,char*argv[]){vectorStudentvec;getdata(vec);cout按分数排序输出endl;sort(vec.begin(),vec.end(),cmpScore);printdata(vec);cout按姓名排序输出endl;sort(vec.begin(),vec.end(),cmpScore);printdata(vec);coutvec.size();return0;}classDataTable{enum{MAxColumnN=20};enum{MAxRowN=1024};stringcolumns[MAxColumnN];intcolumnN;DataRow*rows[MAxRowN];introwN;public:stringtableName;DataTable
本文标题:C++2010-2011冬A
链接地址:https://www.777doc.com/doc-4447857 .html