版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计网上教学活动文本(2023.10.20)唐龙:同学们现在开始答疑,请大家提问。问:如何学好这门课程?唐龙:最简朴一句话说是:在初步理解重要基本概念的基础上多上机实践。问:在C++进行程序开发时,碰到大批量的数据需要解决时,是用函数还是结构链,是不是尚有其它的办法?唐龙:这不能一概而论,要看所解决的是什么数据,有什么解决规定,先要选择采用合理的数据结构和算法,才也许开发出合用的程序。问:我们如何才干考好这门课程?它的考试题型有哪些?徐孝凯:.认真听好老师的面授辅导课;.认真按照实验教材的规定做好每个实验:.认真做好形成性作业;.到期末复习阶段,按照实验教材的附录中所给的综合练习题反复做好练习。.参考以前考过的试卷,题型基本不变。问:面向对象程序设计的重点内容?唐龙:本课程着重对C++语言的基本概念和语法规则理解,掌握其使用方法,进而初步学会运用于实际编程。最重要的基本概念,例如,类与对象,继承,重载等•定要清楚理解,并学会在简朴的编程应用。徐孝凯:往届试卷,供同学们复习时参考中央广播电视大学dx.Output();dy.Output0;)五、指出程序或函数的功能(每小题6分,共12分)#include<iostream.h>#include<stdlib.h>nclude<math.h>voidmain()(inti=10,a;while(i>0)(a=rand()%90+10;8intj,k=int(sqrt(a)+1e-5);〃sqrt(x)为求x的平方根函数for(j=2;jV=k;j++)®。if(a%j==0)break;if(j>k){cout«a<<*';i—;}})voidInput(IntNode*&f)intn;cout<〈”从键盘给n输入一个整数:”;docin>>n;while(n<0);if(n==0){f=NULL;return;)f=newIntNode;IntNode*p=f;cout<V”从键盘输入"<<n<<”个整数:";while(n一){p=p->next=newIntNode;cin>>p—>data;)p->next=NULL;p=f;f=f—>ncxt;deletep;)假定IntNode的类型定义为:structIntNode{ntdata;〃结点值域IntNode*next;〃结点指针域};六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分)。假定规定下面程序的输出结果为“11/15",其主函数中存在着三行语句错误,请指犯错误语句行的行号并改正错误行。#include<iostrearn,h>c1assFranction{〃定义分数类。intnume://定义分子°intdeno;〃定义分母publie:〃把*this化简为最简分数,具体定义在此外文献中实现voidFranSimp();〃返回两个分数*Ihis和x之和,具体定义在此外文献中实现gFranctionFranAdd(constFranction&x)://置分数的分子和分母分别0和1。voidInitFranction(){nume=0;deno=1;}〃置分数的分子和分母分别n和d。voidInitFranction(intn,intd){nume=n;deno=d;}〃输出一个分数gvoidFranOutput0{cout<<nume«//'<<deno<<end1;});TOC\o"1-5"\h\z8VoicImain()//I行(〃2行。Franctiona,b,c;//3行。a.InitFranction(6,15);//4行b.InitFranction(1);//5行c.InitFranctionO;//6行。c=FranAdd(a,b);//7行ocout«c.nume<<7,«c.deno«end1;//8行错误行的行号为、和。分别改正为、和O七、编程(每小题8分,共16分).计算1+3+32+...+3]。的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标记符。.根据下面类中Uion函数的原型和注释写出它的类外定义。classArray{式nl*a;〃指向动态分派的整型数组空间ointn;//记录数组长度public:Array(intaa[],intnn);//构造函数,运用aa数组长度nn初始化n,。〃运用aa数组初始化a所指向的数组空间rray(Array&aa);〃拷贝构造函数Array&Give(Array&aa);//实现aa赋值给*this的功能并返回*this
ArrayUion(Array&aa);〃实现*this和aa中的数组合并的功能,把合并//结果(其长度为两数组长度之和)存入临时对象并返回intLenth(){returnn;}//返回数组长度-voidPrint(){〃输出数组«>for(inti=0;i<n;i++)cout«a[i]VV'';。cout<<endl;);中央广播电视大学计算机科学与技术专业面向对象程序设计试题
答案及评分标准(供参考)一、单项选择(每小题1分,共12分)1.C2.C3.I)4,C5.B6.A7.B8.DCB11.A12.B二、填空(每空7.B8.DCB11.A12.B二、填空(每空1分,共14分)1.下一行2.33.2二、填空(每空1分,共14分)二、填空(每空1分,共14分)1.下一行2.33.23.不断止4.515.代码6.4*i7.H7.H8.单继承7.H8.单继承9.不可以10.AB0{)11.a12.2三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共24分)1.x〃2分i//2分-j〃2分五、指出程序或函数的功能(每小题6分,共12分)NODE*p=LNODE*p=Lp=p->next(3)p->dataq->nextp(3)returnNODE*p=Lp=p->next(3)p->dataNODE*p=Lp=p->next(3)p->dataq->nextp(3)return//2分〃2分//2分〃2分〃2分P//2分4.4.intStack::PopOc1cm[top-]4.intStack::PopOc1cm[top-]Pop()〃2分//2分//2分四、写出程序运营结果(每小题8分,共16分)11413855〃每个数据占3分,全对给8分abcdef30〃4分,每个数据2分abedefxyz50abedefxyz50//4分,每个数据2分1.随机产生出10个10至100abedefxyz50//4分,每个数据2分一方面从键盘上输入一个整数给n,然后依次输入n个整数建立以表头指针为f的链表。评分标准:根据叙述情况酌情给分。六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分)。错误行的行号为578分别改正为b.InitFranction(l,3);c=a.FranAdd(b);c.FranOutput()评分标准:共6个数据,每个数据1分。七、编程(每小题8分,共16分)评分标准:根据编程情况酌情给分。#include<iostrcam.h>voidmain()(0inti;〃用i作为循环变量intp=l;〃用p作为累乘变量。ints=l;//用s作为累加循环变量for(i=1;i<=l0;i++){p*=3;s+=p;}ocout«s<<end1;}ArrayArray::Uion(Array&aa){intk=n+aa.n;int*w二newint[k];for(i=0;i<n;i++)w[i]=a[i];for(i=0;i<aa.n;i++)w[i+n]=aa.a[i];Arrayr(w,k);returnr;)中央广播电视大学计算机科学与技术专业面向对象程序设计试题(4)2023年8月题号―-二三四五六七总分得分一、单项选择(每小题1分,共13分)TOC\o"1-5"\h\z.字符串〃a+b=12\n〃的长度为()。A.6B.7C.8D.9.假定一个二维数组的定义语句为“inta句][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。A.0B.4C.8D.6.以下对的的描述是()。A.函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套4.设有定义“doublearray[10];则表达式sizeof(array)/sizcof(array[0])的结果为()oA.array数组首地址B.abay数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数.要使p指向动态空间中的包含30个整数单元的数组使用的定义语句为()。A.int*p=newint[30];B.int*p=newint(30);C.int*p=new[30];D.*p=newint[30];TOC\o"1-5"\h\z.软件产品与其他软件产品组合成一个整体的难易限度叫做软件的()。A.可维护性B.可复用性C.兼容性D.对的性.在多文献结构的程序中,通常把类的定义单独存放于()中。A.主文献B.实现文献C.库文献D.头文献.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为1ength,则队首的后一个位置为(),>A.first+1B.(first+1)%MSC.(first-1)%MSD.(first+1ength)%MS.假定一个类的构造函数为“A(intaa=l,intbb=0){a=aa;b=bb;}“,则执行“Ax(4);”语句后,x.a和x.b的值分别为()。A.1和0B.1和4C.4和1D.4和0.假定AB为一个类,则执行“ABa(2),b[3],*p[4];”语句时共调用该类构造函数的次数为(A.3B.4C.5D.911.在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。A.0B.1C.2D.32.在重载一运算符时,若运算符函数的形参表中没有参数,则不也许的情况是()。A.该运算符是一个单目运算符。B.该运算符函数有一个隐含的参数this。C.该运算符函数是类的成员函数。D.该运算符函数是类的友元函数。13.派生类的对象对其基类中()可直接访问。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员二、填空(每空1分,共17分).多行注释的开始标记符和结束标记符分别为和o.假定x=5,y=6,则表达式x++*++y的值为。.假定x是一个逻辑量,则x&&true的值为。.含随机函数的表达式rand()%20的值在至区间内。.若需要把一个字符串〃aaa〃赋值到字符数组a中,则需要执行字符串函
计算机科学与技术专业面向对象程序设计试题(3)2023年8月题号—二三四五六七总分得分一、单项选择(每小题1分,共12分)1.设x和y均为bool量,则x||y为假的条件是(A.它们均为真B.其中一个为真C.它们均为假1).其中一个为假..假定一个二维数组的定义语句为“int的值为()。A.2B.4C.6.以下错误的描述是()o函数调用可以A.出现在一个表达式中C.作为一个函数的实参.假定一个二维数组的定义语句为“int的值为()。.假定一个二维数组的定义语句为“int的值为()。A.2B.4C.6.以下错误的描述是()o函数调用可以A.出现在一个表达式中C.作为一个函数的实参a[3][4]={{3,4},{2,8,6}};”,则元素D.8B.出现在执行语句中D.作为一个函数的形参.关于局部变量,下面说法对的的是(A.定义该变量的程序文献中的函数都可以访问B.定义该变量的函数中的定义处以下的任何语句都可以访问C.定义该变量的复合语句中的定义处以下的任何语句都可以访问D.定义该变量的函数中的定义处以上的任何语句都可以访问.假定p是具有int**类型的指针变量,则给p赋值的灼的语句为()op=newint;p=newint*;p=newint;p=newint*;p=newint**;D.p.程序的编译是以为单位进行的。.一个数组的数组名事实上是指向该数组的元素的指针,并且在任何时候都不允许它。.指针变量pv和pc定义为“void*pv="HeHo,word!”;char*pc;",要将pv值赋给pc,则对的的赋值语句是。.C++支持两种多态性:时的多态性和时的多态性。.在一个用数组实现的队列类中,除了保存队列元素的叔祖成员外,还包具有两个数据成员,一个指明队首元素位置,另一个指明队列o.一个类的函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。.假定用户为类AB定义了一个构造函数“AB(intaa,char*bb=NULL):a(aa),b(bb){}",则该类中至少包具有个数据成员。.重载插入运算符<<时,其运算符函数的返回值类型应当是_O三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分).打印出2至99之间的所有素数(即不能被任何数整除的数)。#inc1ude<iostreain.h>#inc1ude<math.h>voidmain()inti,n;for(n=2;—(1)—;n++){inttemp=int(sqrt(n));〃求出n的平方根并取整for(i=2;(2);i++)if(n%i=0)if(i>temp)cout«n<<*cout«>\n2.下面是对按从小到大排列的有序数组a[n]中进行二分查找x的算法,若查找成功返I可该元素下标,否则返回一1。ntBinarySearch(inta[],intn,intx)(。intlow=0,high二nT;〃定义并初始化区间下界和上界变量intmid;//定义保存中点元素下标的变量while(low<=high){amid=(1);if(x==a[mid])(2);elseif(x<a[mid])high=mid-l;8else(3);)。return-1;(1)classA{nta,b;publie:A(intaa=O,intbb=0)(1){}//分另U用aa和bb相应初始化a和b};main(){—(2);〃定义类A的对象x并用5初始化,同时定义y并用x初始化一⑶—;〃定义P指针,使之指向对象x)(2)(3)四、写出程序运营结果(每小题6分,共18分)#inc1ude<iomanip.h>constintN=5;voidmain()(inti,p=l,s=0;for(i=1;i<N;i++){gp=p*i:cout«setw(5)<<i<<setw(5)<<p;cout<<setw(5)<<s«endl;#inc1ude<iostream.h>voidmainO(chars[3][5]=f1234,\"abed"/+-*/"char*p[3];for(inti=0;i<3;i++)p[i]=s[i];for(i=2;i>=0:i)cout«p[i]«>';cout<<endl;)#inc1ude<iostream.h>classDate(publie:Month=m;DvoidSetDatc(inty,intm,intd)(Ycar=y;voidPrintDateO{cout<<YearVVVVMonth<<"/"<<Day<<
Month=m;Dendl;)Date(){SetDate(2023,1,1);}endl;)Date(inty,intm,intd)(SetDate(y,m,d);}protected:intYear,Month,Day;};classTimepub1ic:voidSetTime(inth,intm,ints){Houre=h;Minutes=m;Seconds=s;}voidPrintTime(){cout<<Houre<<":z,<<Minutes<<z,:z,<<Seconds<<endl;)Time(){SetTime(0,0,0);}Time(inth,intm,ints){SetTime(h,m,s);}protected:intHoure,Minutes,Seconds;intHoure,);c1assDateTime:c1assDateTime:c1assDateTime:pub1icDate,pub1icTimec1assDateTime:public:I)ate_Time():Date(),TimeO{};Date_Time(inty,intmo,intd,inth,intmi,ints):Date_Time(intDate(y,mo,d),Time(h,mi,s){}voidPrintDate_Time(){PrintDateO;PrintTime();});voidmain()(Date_Timedt_a,dt_b(2023,10,1,6,0,0);dt_a.PrintDate_Time();dt_b.SetTime(23,59,59);dt_b.PrintDate_Time();dt_a.SetDate(2023,12,31);dt_a.PrintDateTime();}五、指出程序或函数的功能(每小题6分,共12分).ttinclude<iostream.h>doublef1(intn){doublesign=l>s=l;for(inti=2;i<=n;i++){8s+=sign/(i*i);°sign*=-l;0)。returns;voidmain()inta;cin»a;cout«fl(a)<<endl;)voidOutput(IntNode*f)(f(!f)return;whi1e(f){cout«f->data<<*\f=f->next;)cout<<endl;}假定IntNode的类型定义为:structIntNode(intdata;〃结点值域IntNode*next;〃结点指针域);六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分)下面是一个类的定义,存在着3处语法错误(有的为单个字符),请指犯错误行的行号并改正。//I行c1//I行TOC\o"1-5"\h\zprivate://2行inta,b;//3行intgetmin(){return(a<b?a:b);}〃4行publie//5行intc;//6行voidSetValue(intxl,intx2,intx3){//7行a=xl;b=x2;c=x3;〃8行。}://9行intGetMin();〃1。行);〃“行intGetMin(){〃12行aintd=getmin();〃13行return(d<c?d:c);〃14行}//16行错误行的行号为、和o分别改正为、和七、编程(每小题8分,共16分).求满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。.根据下面类中Uion函数的原型和注释写出它的类外定义。classStrings{。char*s;//指向动态分派的字符串数组空间into://记录字符串长度public:8Strings(chartstr);〃构造函数,运用slr字符串长度初始化n,//运用str字符串初始化s所指的字符串空间Strings(Strings&str);〃拷贝构造函数Strings&Give(Strings&str);//实现str赋值给*this的功能并返回*thisStringsUion(Strings&str);〃实现*this和str中的字符串连接的功能,//把连接结果存入临时对象并返回。intLonthO{returnn;}//返回字符串长度。voidPrint(){cout«s«endl;}//输出字符串};.中央广播电视大学计算机科学与技术专业面向对象程序设计试题
答案及评分标准(供参考)一、单项选择(每小题1分,共13分)BABB6.7.BDB12.13.二、填空(每空1一、单项选择(每小题1分,共13分)BABB6.7.BDB12.13.二、填空(每空1分,共17分)/**/2.353.4.19rcpy6.6.文献6.文献7.第一个修改8.pc=(6.文献7.第一个修改8.pc=(char*)PV;9.编译运营10.长度(或为队尾位置)1111.析构11.析构12.11.析构12.213.ostream&三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分)1.(1)n<=99//2分(2)i<=temp//2分(3)break//2分2.(1)(low+high)/2(2)returninid//2分(3)low=mid+1〃2分3.=newint[10];.软件产品在需求发生变化、运营环境发生变化或发现软件产品自身的错误或局限性时进行相应的软件更新的难易限度叫做软件的()。A.可维护性B.可复:用性C.兼容性D.对的性.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。A.inB.inlineC.inLineD.InLinerTOC\o"1-5"\h\z.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为()。A.length+1B.first+lengthC.(first+length-l)%MSD.(first+length)%MS.假定一个类的构造函数为“A(intaa,intbb){a=aa;b=aa*bb;}”,则执行“Ax(4,5);”语句后,x.a和x.b的值分别为()。A.4和5B.5和4C.4和20D.20和5.假定AB为一个类,则执行"AB*p=newAB(1,2)语句时共调用该类构造函数的次数为()。A.0B.1C.2D.3.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明()。A.需加上类域的限定B.不需加上类域的限定C.类域的限定可加可不加D.不需要任何限定12.关于插入运算符〈V的重载,下列说法不对的的是()。A.运算符函数的返回值类型是。stream&。
:a(aa),b(bb)〃2分注注:x(5)与x=5等效,y(x)与y=x等效注:x(5)与x=5等效,y(x)与注:x(5)与x=5等效,y(x)与y=x等效四、写出程序运营结果(每小题6分,共18分)1.111//I分223〃1分369//2分42433//2分2.+-*/abed1234〃6分3.2023/1/1//I分0:0:0〃1分2023/10/1//I分23:59:59//I分2023/12/31〃1分0:0:0〃1分五、指出程序或函数的功能(每小题6分,共12分)评分标准:根据叙述情况酌情给分。.计算并输出1+£粤的值,其中a的值由键盘输入。.对于以表头指针为f的链表,依次显示出每个结点的data域的值。六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分)评分标准:每个数据占1分。错误行的行号为5912分别改正为public:}intCE::GetMin(){七、编程(每小题8分,共16分)评分标准:根据编程情况酌情给分。.#inc1ude<iostream.h>voidmain()(inti=0;〃用i作为依次取值偶数的变量ints=0;〃用s作为累加变量do{。i+=2;s+=i*i;。)while(s<1000);cout<<"n="«i—2«end1;)2.StringsStrings::Uion(Strings&str){Stringsr;or.n=n+str.n;r.s=newchar[r.n+1];®strcpy(r.s,s):®strcat(r.s,str.s);returnr;)徐孝凯:今天就到此结束,同学们还可在平常答疑中提出问题来讨论。B.重载的运算符必须定义为类的成员函数。C.运算符函数的第一个参数的类型是。stream&。D.运算符函数有两个参数。二、填空(每空1分,共14分).当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到的开始位置。.假定x和y为整型,其值分别为16和5,则x/y和d。uble(x)/y的值分别为—和。.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时执行。.sir1en("apple")的值为,strcmp(〃a〃,"A")的值为.C++程序运营时的内存空间可以提成全局数据区,堆区,栈区和区。.假定a是一个一维指针数组,则a+i所指对象的地址比a大字节。.已知语句“coutV<p;"的输出是“Hell。!”,则语句“c。utV<*p;”输出的是o.假如一个派生类只有一个唯一的基类,则这样的继承关系称为o.假定AA是一个类,“AA*abc()const;”是该类中一个成员函数的原型,在该函数体中向*this或其成员赋值。10.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为11.假定用户为类AB定义了一个构造函数”AB(intaa)(a=aa;}”,该构造函数实现对数据成员的初始化。12.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有个操作数。三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共24分)ioy.下面程序计算出z(-1)加=~的值。t>ii!#include<iostream.h>voidmain()(3doublex,p1=1,p2=1,s=0;inti,j=1;cout<<”输入x的值:";。cin>>x;for(i=l;i<=l0;i++){°pl*=(1);8p2*=(2);。s+=j*p1/p2;〃j的值为(-l)e。J=(3);)cout«s<<end1;2.假定有定义为"structNODE{intdata;NODE*next;};",下面算法是依次显示输出以L为表头指针的链表中各结点的值。voidff(NODE*L)(。for((1)—;p!=1WLL;—(2)—)acout<<(3)<<'。cout«end1;)(3)3.假定有定义为"structNODE{intdata;NODE*ncxt;};",下面算法是把以L为表头指针的链表中各结点依次按相反顺序链接并返回新链表的表头指针。NOD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游行业合同管理策略
- 地下铁道挡土墙施工合同
- 军旅生活编剧招聘协议
- 机场跑道建设施工合同协议
- 银行服务保函协议书
- 广告创意设计师招聘合同
- 广告设计人才派遣协议
- 试驾车辆试驾服务协议
- 酒店锅炉升级拆除施工协议
- 鞋帽批发合伙协议
- 二年级安全教育期末测试题
- 个人车辆抵押借款合同
- 2022电大《建筑材料(A)》期末试题及答案
- 团队合作能力和创新团队建设试题100分标准答案
- 22秋中传媒《传播学概论》作业考核答卷
- 商务英语视听说知到章节答案智慧树2023年山东外国语职业技术大学
- 西安东原地产品牌年度推广方案
- C++程序设计智慧树知到答案章节测试2023年咸阳师范学院
- 五年级上册道德与法治课件-第8课第四课时 影响深远的汉字人教部编版
- GB/T 23604-2009钛及钛合金产品力学性能试验取样方法
- 第1章 大数据可视化概述
评论
0/150
提交评论