面向对象程序设计网上教学活动文本2_第1页
面向对象程序设计网上教学活动文本2_第2页
面向对象程序设计网上教学活动文本2_第3页
面向对象程序设计网上教学活动文本2_第4页
面向对象程序设计网上教学活动文本2_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计网上教学活动文本(2004.4.7)问:考试是开卷还是闭卷?考试的具体范围?徐孝凯:今年以后要改为闭卷了,范围还是见期末复习指导、或新考核说明、或考试文件通知。问:怎样学好面向对象程序设计这一门课程?徐孝凯:首先从基本概念入手,一定要弄清基本思想,然后要多上机实践。问:在新版本的教材中没有讲到模板的内容,但作业中又有这样的内容。这样我们在教学中不得不讲,请问在考试中是否也考呢?徐孝凯:这个教材模板内容不多,这部分比较难,所以不做重点要求,你们可以根据学生学习具体情况掌握。让学生有点基本的认识就可以了。将来在数据结构课程里可能有更多应用实例,会加深对它的理解。另外,在实验教材中作

2、了补充,请参考。问:面向对象程序设计学习中应注意那些方面?徐孝凯:基本概念要弄清楚。比如类。在此基础上多实践,多上机。问:有很多学员反映面向对象程序设计的教材的编排或者说内容的安排不是很好,对于学员的自主学习不是很适合,要学好这门课程还必须参照其他的资料,我们作为教师怎么处理呢?徐孝凯:我们很愿意听到有关教材的修改意见,今后有机会再版我们修订,作为大学生的学习教材,不应该以唯一的一本书作为教材,除了主教材之外,同学们可以更广泛的参阅其它的参考书,取长补短,深化理解。请主要参考实验教材。问:请举例讲解静态数据成员的需要性好吗?唐龙:静态数据可以确保留存本次调用该函数时候所得到的结果,可作为下一次

3、使用的初始值,不会丢失。徐孝凯:关于学习面向对象课程问题1. 该课程介绍VC+6.0语言的语法和程序设计;2. 学习主教材的同时,学习好实验教材中每个实验的预备知识部分;3. 认真按实验教材的要求作好每个实验;4. 按中央电大教育杂志社的每学期出版发行的该课程期末复习指导的要求搞好复习;5. 按中央电大教育杂志社的每学期出版发行的该课程作业练习册,认真作好作业;6. 到期末复习阶段,认真复习好实验教材附录中给出的综合练习题;7. 到期末复习阶段,练习一下往届的试卷。问:很多人都说C+程序设计这门课程比较难学,有没有什么好的学习方法?C+程序设计的难点在哪几个章节?唐龙:C+的最大难点就在于掌握

4、类的概念,但是它正是C+具有很强生命的基础。要围绕类的概念及其应用,多下功夫。问:如何理解类?唐龙:类本身是一些实例的抽象,它定义了一种数据类型,既包括有数据成员,又包括对数据的操作。使得C+语言具有强有力的特性,封装,重载,继承等特性。问:怎样理解虚函数?唐龙:这个问题不是几句话说清楚的,请参阅教材。徐孝凯:除了参考主教材中有关内容外,请认真参考实验教材中的实验九内容问:徐老师,C+的语句是说明和定义语句,表达式语句其它还有什么?徐孝凯:还有分支、循环、返回等语句。问:怎样理解多态性?徐孝凯:请参考实验教材中的实验九内容。问:i+和+i在和指针连用时怎样理解请举例讲解?徐孝凯:*p+表示先取

5、p所指向的单元内容,后使p加1,即p指向了下一个单元;而*+p表示先使p指向下一个单元,然后取该单元的值。具体请参看实验教材中的实验五。唐龙:inti=0,j=0,k=0;j=+i+1;cout<<"i="<<i<<"j="<<j<<endl;/这个结果应当是i=1;j=2;如果我们改成下面的表达式j=(i+)+1;cout<<"i="<<i<<"j="<<j<<endl;/这个结果应当是i=1;

6、j=1;问:以后我们毕业的时候要写论文吗?徐孝凯:肯定要做毕业设计,占10学分,具体由地方电大届时安排。问:湖南常德电大在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句。徐孝凯:ip=newint10;请参考实验教材中的实验五。问:怎样来理解模板的内容?谢谢!唐龙:为函数或者类提供一个能自动生成适用于指定的某种不同数据类型的函数或者类。问:老师:我以前学的是机械专业,没有学过C+,象我这样的情况怎样才能学好这门课程呢徐孝凯:这个课主要内容就是C,你就按照课程的教学计划认真学就行了。问:在进行指针运算时,要注意些什么?哪些地方容易出现错误?唐龙:最重要指针要

7、经过初始化才能使用,其次指针本身也是一个变量,不同数据类型的指针是应看作不同的数据类型,因为不同数据类型占用的内存空间是不一样的,所以指针移动一个位置所造成的内存地址的变化也是不一样的。问:徐老师,上次洛阳会议一别,很高兴网络又使我们相见了。我是湖南电大这门课的责任教师。学生反映,面向对象程序设计学生学习感觉比较困难,除了基础较差之外,这门课程与实际应用联系不大。我觉得可以参照软件开发工具与环境(VC+)这门课的形式,让学生有一种看得见的感觉。很可惜这门课是门选修课,很多学生怕难没有选。到了毕业设计的时修,又为没有熟悉的开发工具而苦恼。建议实验教材可以参照采用一些简单的软件开发工具与环境的例子

8、,提高学生的学习性趣徐孝凯:你的建议很好,若用C+语言环境开发Windows应用程序,至少要在面向对象程序设计课程之后再开一门VC+编程与应用的课程,你说的软件开发工具与环境课程的教材,我看过,编写的不太好,请安排省开课,到社会上选择实用性和可读性好的教材使用。问:考试题型是什么?徐孝凯:请参考已经帖出的网届试卷,6月份后看该课程期末复习指导。问:我想问一下,关于C+的数据在计算机中是怎么保存的?徐孝凯:数据到转换为二进制保存。问:怎么用指针来编程?徐孝凯:请参考实验教材中的实验五。问:业余班学生在学习面向对象的时候,总感实验不足,难理解书本内容。如何补救?徐孝凯:请按实验教材做好每个实验。问

9、:c+的引用我不太懂,您有有关的资料吗?徐孝凯:请参考实验教材中的实验六。问:如何理解封装?封装的好处是什么?唐龙:封装是c重要的特性,将操作和数据封装成类,才能实现面向对象这样一个思想,封装本身还保证了数据的安全性。问:期末考试重点是那几章?徐孝凯:期在期末复习期间按实验教材附录所给的综合练习题搞好复习。问:唐老师、徐老师、李老师:你们辛苦了,我是长沙电大计算机专业责任教师,主讲面向对象程序设计,我觉得这本教材编得非常好,适合学生自学,对于在专科阶段学过C+程序设计的同学来说是没有问题的,但对于以前是非计算机专业的学生来说还是有一定的困难。对于这门课程的教学,请你们提出一些建议,以使我们更好

10、地搞好教学工作。徐孝凯:谢谢你。在课程教学上,建议结合实验教材教学。问:十分感谢徐老师,对于这门课程的考试,去年上半年是开卷,下半年是闭卷,请问这是全国统一,还是由省校来定?徐孝凯:从去年下半年开始以后都该为闭卷,具体按考试通知上的规定办。问:怎么用程序过程编程?徐孝凯:通过头文件使用。问:我们的毕业设计的开发工具必须是C+吗?程序设计的发展趋势是面向对象还是面向过程?徐孝凯:毕业设计可以选择任何题目,使用任何开发工具,如C+,JAVA,VB等。问:在C+中“消息”是通过什么机制在“对象”中传递的?徐孝凯:通过函数调用。问:函数或者类提供一个能自动生成适用于指定的某种不同数据类型的函数或者类。

11、徐孝凯:不能,需编程得使用模板类。问:与往年比较,今年考试的难易程度相同吗?徐孝凯:差不多。请参考关于学习面向对象课程问题的帖子。怎么用它编程啊?徐孝凯:参看教材,包括实验教材。问:得面对对象程序设计和vfoxpro有区别吗?徐孝凯:C+是进行单值的程序设计,VP是面向集合的数据库设计。问:面向对象的程序设计应尽量使用什么继承?徐孝凯:一般使用单继承。问:若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上一个什么关键字?徐孝凯:const问:在本科教学中,我认为要以面向对象程序设计为基本工具,开展相应的教学,包括数据结构的实验,选修软件开发工具与环境(VC+)用V

12、C进行课程设计和毕业设计,以一门语言为突破口,让学生反复练习,在理论和实际应用能力都能得到提高。徐孝凯:对的,需要同清华统一看法,并付诸实施。问:可否举例说明一下宏替换的使用?徐孝凯:看教材。问:面向过程与面向对象的区别和联系?徐孝凯:看教材。计算机科学与技术专业面向对象程序设计(本科)2003年作业练习参考解答第一次作业一、单项选择题1.A2.B3.A4.D5.D6.B7.B8.C9.C10.C11.C12.C13.D14.B15.C16.B17.B18.B二、填空题1.cpp程序文件2.cout3.空白4.分号(;)5.原型(或声明)6.void7.4118.0xF5(F大小写均可)9.4

13、810.1511.1312.true(或1)16. 6 6013.false(或0)14.3*x*y/(x+y)15.4217.01918.35三、程序填充题1.n<=99(2) i<=temp(3) break2.b%i=0(2) i+(或+i)b>=i3.(1) voidfun(charss口)(2) fun(s)(3) i<n/2四、写出程序运行结果1.1 235813213455892.1114switchend.3.1064五、指出程序或函数的功能1.计算并输出22+42+62+302的值。2.计算并输出1+a-的值,其中a的值由键盘输入。i2i六、程序改错题

14、1.错误行的行号为:578分别改正为:b.InitFranction(1,3);c=a.FranAdd(b);c.FranOutput()七、编程题2.#include<iostream.h>voidmain()inti;/用i作为循环变量intp=1;/用p作为累乘变量ints=1;/用s作为累加循环变量for(i=1;i<=10;i+)p*=3;s+=p;cout<<s<<endl;3.#include<iostream.h>voidmain()intx,max;cin>>x;max=x;for(inti=0;i<9;

15、i+)cin>>x;if(x>max)max=x;cout<<"max:"<<max<<endl;4.#include<iomanip.h>voidmain()intc1,c2,c3;doublex;c1=c2=c3=0;cin>>x;while(x>0)if(x<=12)c1+;elseif(x<=15)c2+;elsec3+;cin>>x;cout<<c1<<<<c2<<<<c3<<endl;

16、第二次作业一、单项选择题1.A2.D3.C4.B5.A6.B7.C8.B9.C10.C11.A12.A13.C14.A15.B16.A17.D二、填空题1.switch2.break3.主(或main)0197.strcpy8.static9.虚拟类型(或类型)10.static11.头文件12.代码区13.i*m+j+114.415.int*16.2517.4218.第一个修改三、程序填充题1.(1) x/2(2) x!=0(3) cout<<ak2.(1) (low+high)/2(2) returnmid(3) low=mid+13.(1) i<n

17、(2) tablei(3) L=p四、写出程序运行结果1. +*+*2.101-640-36-6-93.x,y=10,26x,y=26,10x,y=10,26x,y=25,11五、指出程序或函数的功能1.N计算并输出i!的值,其中N值由键盘输入。2.i12.实现字符串系统函数strcpy的功能,把b所指的字符串拷贝到a所指的字符数组空间中。六、程序改错题1.错误行的行号为:5912分别改正为:public:intCE:GetMin()七、编程题1intf(inta,intn)if(n=0)return0;elsereturnan-1*an-1+f(a,n-1);2voidp(intn)if(n

18、!=0)p(n-1);for(inti=0;i<n;i+)cout<<n;cout<<endl;3intAA:MaxMin(int&x,int&y)intmx,my;mx=my=a0;for(inti=1;i<n;i+)if(ai>mx)mx=ai;if(ai<my)my=ai;x=mx;y=my;if(n>0)return1;elsereturn0;第三次作业一、单项选择题1. B2.B3.B4.A5.D6.C7.D8.C9.C10.D11.C12.A13.B14.B15.D16.C17.C18.D、填空题1.*p2.in

19、t(*)63.X4.a5.deletep6.ple7.(*p).name8.69.对象10.聚合11.多继承12.设计实现13.private或私有14.private15.冒号16.不在17.*this18.队列长度19.(first+1)%MS三、程序填充题1(1) int&ARRAY:(2) n>=s(3) vn(或*(v+n)2(a)AA:MaxA()(b)x=ai(c)returnx3(a) x.SetA(a,6)(b) x.MaxA()(c) x.PrintA()四、写出程序运行结果121522+-*/abcd123431220五、指出程序或函数的功能1对于二维字符数

20、组a中保存的M个字符串,分别统计并输出其长度小于5、大于等于5且小于15、大于等于15的字符串个数。2实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。六、程序改错题1错误行的行号为:131517错误原因分别为:在函数体给常量c赋值缺少分号定义z多一个参数七、编程题1intAA:CompareBig(AAb)intk;if(n>b.n)k=b.n;elsek=n;for(inti=0;i<k;i+)if(ai>b.ai)return1;elseif(ai<b.ai)return-1;if(k=n&&k=b

21、.n)return0;elseif(k<n)return1;elsereturn-1;2Array:Array(intaa,intnn)n=nn;a=newintn;for(inti=0;i<n;i+)ai=aai;3Array&Array:Give(Array&aa)deletea;n=aa.n;a=newintn;for(inti=0;i<n;i+)ai=aa.ai;return*this;第四次作业一、单项选择题1.C2.D3.B4.C5.C6.C7.A8.C9.B10.A11.D12.A13.A14.B15.C16.C17.C18.D二、填空题1.插入

22、2.ElemHead->next3.相同4.5.无参构造函数6.107.初始化表89.不会10.211.312.析构int&aa;错误13.只能不能14.优先级15.216.istream&17.返回值空18.公有和保护任何19.二义性三、程序填充题1.(a) intStack:Pop()(b) elemtop-(c) Pop()2.(a) a=newintMaxLen(b) returnai;(c) s+=r.GetValue(i)3.(1) Base:output()(2) Base(m1,m2)(3) mem3=m3四、写出程序运行结果1.a: 6/15b: 3/1

23、0c: 7/10d: 11/102.5 69 203.2000/1/10:0:02002/10/123:59:592002/12/310:0:04.10,20,30,4015,26,30,4015,26,210,280五、指出程序或函数的功能1.统计出以表头指针为f的链表中结点的个数。2.求出并返回字符指针参数s所指向的字符串长度。六、程序改错题1.错误行的行号为2和5分别改正为friendfract&operator+=(fract&,fract);和fract&operator+=(fract&f1,fractf2);七、编程题1.Strings:Strin

24、gs(Strings&str)n=str.n;s=newcharn+1;strcpy(s,str.s);2.classA_classprivate:intx,y,t;public:A_class(inti,intj):x(i),y(j)if(y>x)t=x;x=y;y=t;/其它函数从略friendintVariance(A_class&ac);/参数名任意;intVariance(A_class&ac)returnac.x*ac.x-ac.y*ac.y;voidmain()A_classA_obj(3,5);cout<<"Result:&q

25、uot;<<Variance(A_obj)<<endl;3.Circle(floatrad):rad(rad)Circle()floatGetPerimeter()return2*PI*rad;/计算圆形周长floatGetAre()returnPI*rad*rad;/计算圆形面积中央广播电视大学计算机科学与技术专业面向对象程序设计试题(2)2003年5月题号一一二四五六七总分得分、单项选择(每小题1分,12小题,共12分)1. 由C+源程序文件编译而成的目标文件的缺省扩展名为()A.cppB.exeC.objD.lik2. .设x和y均为bool量,则x&&a

26、mp;y为真的条件是()A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假3. 在下面的二维数组定义中,正确的是()A.inta5口;B.inta口5;C.inta3=1,3,5,2;D.inta口(10);4. 以下正确的说法是()。A. 用户调用标准库函数前,必须重新定义B. 用户可以重新定义标准库函数,若如此,该函数将失去原有含义C. 系统不允许用户重新定义标准库函数D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中5. 文件包含命令中被包含的文件的扩展名()。A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp6. 要使语句&q

27、uot;p=newint1020;”能够正常执行,p应定义为()。A.int*p;B.int*p;C.int*p20;D.int(*p)20;7. 软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()。A.可维护性B.可复用性C. 兼容性D.正确性8. 假定AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它,则书写格式最好为()。A.aB.AA:aC.a()D.AA:a()9. 队列具有()的操作特性。A.先进先出B.先进后出C.进出无序D.仅进不出10. 当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储()个整

28、数。A.nB.n+1C.n-1D.111. 假定AB为一个类,则执行“ABa,b(3),*p;”语句时共调用该类构造函数的次数为()。A.2B.3C.4D.512. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符1分,14小题,18个空,共18分)1. C+语言的编译单位是扩展名为的文件。2. 从一条函数原型语句“intfun1(void);”可知,该函数的返回类型为,该函数带有个参数。3. 假定x是一个逻辑量,则x|false的值为。4. 作为语

29、句标号使用的C+呆留字case和defaule只能用于语句的定义体中。5. 对一个二维字符数组a进行初始化的数据为”123”,”456”,”789”,则a1元素对应的字符串为。6. 全局变量和静态局部变量具有静态生存期,存放在内存的区中。7. 假定a是一个一维数组,则ai对应的存储地址(以字节为单位)为8. NULL是一个符号常量,通常作为空指针值,它的具体值为9. 面向对象的分析包括分析和分析两步。10. 内联函数的定义模块与模块必须放在同一个文件中。11. 一个类的函数实现对该类对象的初始化功能。12. .假定用户为类AB定义了一个构造函数"AB(intaa=0):a(aa)”,

30、则定义该类的对象时,可以有种不同的定义格式。13. 重载抽取运算符>>时,其运算符函数的返回值类型应当是。14. 若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上和。三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分)1. 斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。#include<iostream.h>voidmain()intf,f1,f2,i;cout<

31、<”斐波那契数列:n”;f1=0;f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3;i<=20;i+)f=(1);cout<<setw(6)<<f;if(2)cout<<endl;fi=f2;f2=(3);cout<<endl;(1)(2)(3)2. 假定有定义为“structNODEintdata;NODE*next;”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。voidf5(NOD

32、E*&L,inttable,intn)if(n<=0)L=NULL;return;L=newNODE;/生成附加的头结点inti=0;NODE*p=L;while(_(1)_)p=p->next=_(2)_;p->data=_(3)_;i+;p->next=NULL;/p=L;L=L->next;/deletep;(1)(2)(3)3classAinta;public:A()a=0;_(a)_/把最后一个结点的指针域置空使 L 指向链表的第一个带值的结点定义构造函数, 用参数 aa 初始化数据成员 a;main()_(b)_;/定义类A的指针对象p_(c)

33、_;/用p指向动态对象并初始化为整数5答案:(a)(b)(c)6分,3小题,共18分)1. #include<iomanip.h>#include<math.h>inta4=36,-5,73,8;voidmain()inti,y;for(i=0;i<4;i+)if(ai<0)y=1;elseif(ai<10)y=ai*ai+3;elseif(ai<60)y=4*ai-5;elsey=int(sqrt(ai);/sqrt(x)为取x的平方根函数cout<<setw(5)<<ai<<setw(5)<<y

34、;2. #include<iostream.h>constintN=5;voidfun();voidmain()for(inti=1;i<N;i+)fun();voidfun()staticinta;intb=2;cout<<(a+=3,a+b)<<3.#include<iostream.h>classDatepublic:Date(inty=2001,intm=1,intd=1)Year=y;Month=m;Day=d;voidPrintDate()cout<<Year<<"/"<<

35、Month<<"/"<<Day<<endl;protected:intYear,Month,Day;classTimepublic:Time(inth=5,intm=30,ints=0)Houre=h;Minutes=m;Seconds=s;voidPrintTime()cout<<Houre<<":"<<Minutes<<":"<<Seconds<<endl;protected:intHoure,Minutes,Seconds

36、;classDate_Time:publicDate,publicTimepublic:Date_Time();Date_Time(inty,intmo,intd,inth=0,intmi=0,ints=0):Date(y,mo,d),Time(h,mi,s)voidPrintDate_Time()PrintDate();PrintTime();voidmain()Date_Timea,b(2002,10,1,6,20,0),c(2003,3,8,6,7);a.PrintDate_Time();b.PrintDate_Time();c.PrintDate_Time();五、指出程序或函数的功能

37、(每小题6分,2小题,共12分)1. #include<iostream.h>#include<math.h>voidmain()intx,y;cin>>x;为求 x 的算术平方根” x=” <<i<< * <<x/i<<endl;y=int(sqrt(x);/sqrt(x)for(inti=1;i<=y;i+)if(x%i=0)cout<<2. intCount(IntNode*f)if(!f)return0;intc=0;while(f)c+;f=f->next;returnc;假定

38、IntNode的类型定义为:structIntNodeintdata;/结点值域IntNode*next;/结点指针域;六、程序改错。请根据程序段或函数模块的功能改写个别地方的错误(每小题6分,共6分)。1. 在下面的定义中,NOD比链表结点的结构,addToList则是一函数,其功能是:将一个值为x的新结点添加到以plist为表头指针的链表的首部(即第一个结点的前面)并返回表头指针。函数中第3行和第5行有错误,请分别改正。structNODEintdata;NODE*next;NODE*adndToList(NODE*plist,intx)/1行NODE*p;/2行*p=newNODE;/3

39、行/4p->data=x;p->next=NULL;/5行plist=p;/6行returnp;/7行分别改正为和七、编程(每小题8分,2小题,共16分)1.22已知叶axL3ax4ax1(x0)(x0),求出并显示当x分别取-3.8,-4.2,8.9,3.5,-5.0,4.5时所对应的y值,要求把a定义为常量,其值设定为的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)。6.4,2.3,10.2,x2. 根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。classAAint*a;intn;intMS;public:voidInitAA(

40、intaa,intnn,intms)if(nn>ms)cout<<"Error!"<<endl;exit(1);MS=ms;n=nn;a=newintMS;for(inti=0;i<n;i+)ai=aai;AA*Reverse1();/通过动态存储分配得到一个AA类对象,并动态分配/aMS数组空间,要求该对象中的n和MS的值与*this中的/对应成员的值相同,数组元素的值是按照*this中数组元/素的相反次序排列得到的,要求该函数返回动态对象的地址。;中央广播电视大学计算机科学与技术专业面向对象程序设计试题(2)参考解答及评分标准2003

41、 年 3 月一、单项选择(每小题1分,12小题,共12分)1. C2.A3.C4.B5.C6.D7.D8.A9.A10.A11.A12.B二、填空(每空1. .cpp 程序1分,14小题,18个空,共18分)2. int03.x4.switch 0 )5.”456”6.全局数据7.a+i*sizeof(ai)8.09. 问题域 应用 10. 类定义 11. 构造12. 213. istream &14.类名 类区分符三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分)1.(1) f1+f2/2分(2) i

42、%5=0/2分(3) f/2分2.(1) i<n/2分(2) newNODE/2分(3) tablei/2分3.(a) A(intaa):a(aa)/2分(b) A*p/2分(c) p=newA(5)/2分四、写出程序运行结果(每小题6分,3小题,共18分)1.36139-517388672.5811143.2001/1/15:30:02002/10/16:20:02003/3/86:7:0五、指出程序或函数的功能(每小题6分,2小题,共12分1.把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。2.统计出以表头指针为f的链表中结点的个数。六、程序改错。请根据程序段或函数模块的功

43、能改写个别地方的错误(每小题6分,共6分。1.每空3分分别改正为p=newNODE;和p->next=plist;七、编程(每小题8分,2小题,共16分1. 根据完整程度酌情给分。#include<iomanip.h>#include<math.h>constdoublea=10.2;voidmain()doublex,y;cin>>x;while(x!=-100)if(x<=0)y=sqrt(a*a+x*x);elsey=3*a*x*x+4*a*x-1;cout<<x<<<<y<<endl;cin

44、>>x;2. 请根据完整程度酌情给分。AA*AA:Reverse1()AA*px=newAA;px->n=n;px->MS=MS;px->a=newintMS;for(inti=0;i<n;i+)px->an-1-i=ai;returnpx;中央广播电视大学计算机科学与技术专业面向对象程序设计试题(4)2003年8月题号一一二四五六七总分得分、单项选择(每小题1分,共13分)1.字符串"a+b=12n”的长度为()。A.6B.7C.8D.92. 假定一个二维数组的定义语句为“inta34=3,4,2,8,6;",则元素a21的值为(

45、)。A.0B.4C.8D.63. 以下正确的描述是()。A. 函数的定义可以嵌套,函数的调用不可以嵌套B. 函数的定义不可以嵌套,函数的调用可以嵌套C. 函数的定义和函数的调用均可以嵌套D. 函数的定义和函数的调用均不可以嵌套4. 设有定义“doublearray10;”,则表达式sizeof(array)/sizeof(array0)的结果为()。A.array数组首地址B.array数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数5. 要使p指向动态空间中的包含30个整数单元的数组使用的定义语句为()。A.int*p=newint30;B.int*p=n

46、ewint(30);C. int *p=new 30;D. *p=new int30;6. 软件产品与其他软件产品组合成一个整体的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性7. 在多文件结构的程序中,通常把类的定义单独存放于()中。A.主文件B.实现文件C.库文件D.头文件8. 在一个用数组实现的队列类中,假定数组长度为MS队首元素位置为first,队列长度为length,则队首的后一个位置为()。A.first+1B.(first+1)%MSC.(first-1)%MSD.(first+length)%MS9. 假定一个类的构造函数为“A(intaa=1,intbb

47、=0)a=aa;b=bb;”,则执行“Ax(4);语句后,x.a和x.b的值分别为()。A.1和0B.1和4C.4和1D.4和010. 假定AB为一个类,则执行“ABa(2),b3,*p4;”语句时共调用该类构造函数的次数为()。A.3B.4C.5D.911. 在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。A.0B.1C.2D.312. 在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是()。A. 该运算符是一个单目运算符。B. 该运算符函数有一个隐含的参数this。C. 该运算符函数是类的成员函数。D. 该运算符函数是类的友元函数。13. 派生类的对象对其基类

48、中()可直接访问。A. 公有继承的公有成员B. 公有继承的私有成员C. 公有继承的保护成员D. 私有继承的公有成员1分,共17分)1. 多行注释的开始标记符和结束标记符分别为和2. 假定x=5,y=6,则表达式x+*+y的值为。3. 假定x是一个逻辑量,则x&&true的值为。4. 含随机函数的表达式rand()%20的值在至区间内。5. 若需要把一个字符串”aaa”赋值到字符数组a中,则需要执行字符串函数的调用来实现。6. 程序的编译是以为单位进行的。7. 一个数组的数组名实际上是指向该数组的元素的指针,并且在任何时候都不允许它。8. 指针变量pv和pc定义为“void*pv

49、=”Hello,word!”;char*pc;”,要将pv值赋给pc,则正确的赋值语句是。9. C+支持两种多态性:时的多态性和时的多态性。10. 在一个用数组实现的队列类中,除了保存队列元素的叔祖成员外,还包含有两个数据成员,一个指明队首元素位置,另一个指明队列。11. 一个类的函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。12. 假定用户为类AB定义了一个构造函数“AB(intaa,char*bb=NULL):a(aa),b(bb)”,则该类中至少包含有个数据成员。13. 重载插入运算符<<时,其运算符函数的返回值类型应当是三、程序填充,对程序、函数或类中划

50、有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分)1. 打印出2至99之间的所有素数(即不能被任何数整除的数)。#include<iostream.h>#include<math.h>voidmain()inti,n;for(n=2;_(1)_;n+)inttemp=int(sqrt(n);/求出n的平方根并取整for(i=2;_(2)_;i+)if(n%i=0)_(3)_;if(i>temp)cout<<n<<''cout<<'n'(1) (2)(3)2

51、. 下面是对按从小到大排列的有序数组an中进行二分查找x的算法,若查找成功返-1。intBinarySearch(inta,intn,intx)intlow=0,high=n-1;/定义并初始化区间下界和上界变量intmid;/定义保存中点元素下标的变量while(low<=high)mid=_(1)_;if(x=amid)_(2)_;elseif(x<amid)high=mid-1;else_(3)_;return-1;(1) (2)(3)3classAinta,b;public:A(intaa=0,intbb=0)_(1)_/分别用aa和bb对应初始化a和b;main()(2)

52、;/定义类A的对象x并用5初始化,同时定义y并用x初始化_(3)_;/定义p指针,使之指向对象x(1)(2)(3)四、写出程序运行结果(每小题6分,共18分)1. #include<iomanip.h>constintN=5;voidmain()inti,p=1,s=0;for(i=1;i<N;i+)p=p*i;s=s+p;cout<<setw(5)<<i<<setw(5)<<p;cout<<setw(5)<<s<<endl;2. #include<iostream.h>voidm

53、ain()chars35="1234","abcd","+-*/"char*p3;for(inti=0;i<3;i+)pi=si;for(i=2;i>=0;i-)cout<<pi<<''cout<<endl;3.#include<iostream.h>classDatepublic:voidSetDate(inty,intm,intd)Year=y;Month=m;Day=d;voidPrintDate()cout<<Year<<&qu

54、ot;/"<<Month<<"/"<<Day<<endl;Date()SetDate(2000,1,1);Date(inty,intm,intd)SetDate(y,m,d);protected:intYear,Month,Day;classTimepublic:voidSetTime(inth,intm,ints)Houre=h;Minutes=m;Seconds=s;voidPrintTime()cout<<Houre<<":"<<Minutes<<":

温馨提示

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

评论

0/150

提交评论