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

下载本文档

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

文档简介

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在和指针连用时怎样理解请

5、举例讲解? 徐孝凯:*p+表示先取p所指向的单元内容,后使p加1,即p指向了下一个单元;而*+p表示先使p指向下一个单元,然后取该单元的值。具体请参看实验教材中的实验五。 唐龙:int i=0,j=0,k=0;j=+i+1;couti=i;j=jendl; /这个结果应当是i1;j2;如果我们改成下面的表达式j=(i+)+1;couti=i;j=jendl; /这个结果应当是i1;j1;问:以后我们毕业的时候要写论文吗? 徐孝凯:肯定要做毕业设计,占10学分,具体由地方电大届时安排。 问:湖南常德电大在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句。 徐孝

6、凯:ip=new int10;请参考实验教材中的实验五。 问:怎样来理解模板的内容?谢谢! 唐龙:为函数或者类提供一个能自动生成适用于指定的某种不同数据类型的函数或者类。 问:老师:我以前学的是机械专业,没有学过C+,象我这样的情况怎样才能学好这门课程呢? 徐孝凯:这个课主要内容就是C,你就按照课程的教学计划认真学就行了。 问:在进行指针运算时,要注意些什么?哪些地方容易出现错误?唐龙:最重要指针要经过初始化才能使用,其次指针本身也是一个变量,不同数据类型的指针是应看作不同的数据类型,因为不同数据类型占用的内存空间是不一样的,所以指针移动一个位置所造成的内存地址的变化也是不一样的。 问:徐老师

7、,上次洛阳会议一别,很高兴网络又使我们相见了。我是湖南电大这门课的责任教师。学生反映,面向对象程序设计学生学习感觉比较困难,除了基础较差之外,这门课程与实际应用联系不大。我觉得可以参照软件开发工具与环境(VC+)这门课的形式,让学生有一种看得见的感觉。很可惜这门课是门选修课,很多学生怕难没有选。到了毕业设计的时修,又为没有熟悉的开发工具而苦恼。建议实验教材可以参照采用一些简单的软件开发工具与环境的例子,提高学生的学习性趣徐孝凯:你的建议很好,若用C+语言环境开发Windows应用程序,至少要在面向对象程序设计课程之后再开一门VC+编程与应用的课程,你说的软件开发工具与环境课程的教材,我看过,编

8、写的不太好,请安排省开课,到社会上选择实用性和可读性好的教材使用。 问:考试题型是什么? 徐孝凯:请参考已经帖出的网届试卷,6月份后看该课程期末复习指导。 问:我想问一下,关于C+的数据在计算机中是怎么保存的? 徐孝凯:数据到转换为二进制保存。问:怎么用指针来编程?徐孝凯:请参考实验教材中的实验五。 问:业余班学生在学习面向对象的时候,总感实验不足,难理解书本内容。如何补救? 徐孝凯:请按实验教材做好每个实验。 问:c+的引用我不太懂,您有有关的资料吗? 徐孝凯:请参考实验教材中的实验六。问:如何理解封装?封装的好处是什么? 唐龙:封装是c重要的特性,将操作和数据封装成类,才能实现面向对象这样

9、一个思想,封装本身还保证了数据的安全性。 问:期末考试重点是那几章? 徐孝凯:期在期末复习期间按实验教材附录所给的综合练习题搞好复习。 问:唐老师、徐老师、李老师:你们辛苦了,我是长沙电大计算机专业责任教师,主讲面向对象程序设计,我觉得这本教材编得非常好,适合学生自学,对于在专科阶段学过C+程序设计的同学来说是没有问题的,但对于以前是非计算机专业的学生来说还是有一定的困难。对于这门课程的教学,请你们提出一些建议,以使我们更好地搞好教学工作。徐孝凯:谢谢你。在课程教学上,建议结合实验教材教学。 问:十分感谢徐老师,对于这门课程的考试,去年上半年是开卷,下半年是闭卷,请问这是全国统一,还是由省校来

10、定? 徐孝凯:从去年下半年开始以后都该为闭卷,具体按考试通知上的规定办。 问:怎么用程序过程编程?徐孝凯:通过头文件使用。问:我们的毕业设计的开发工具必须是C+吗?程序设计的发展趋势是面向对象还是面向过程? 徐孝凯:毕业设计可以选择任何题目,使用任何开发工具,如C+,JAVA,VB等。问:在C+中“消息”是通过什么机制在“对象”中传递的? 徐孝凯:通过函数调用。 问:函数或者类提供一个能自动生成适用于指定的某种不同数据类型的函数或者类。徐孝凯:不能,需编程得使用模板类。问:与往年比较,今年考试的难易程度相同吗? 徐孝凯:差不多。请参考关于学习面向对象课程问题的帖子。 问:怎么用它编程啊?徐孝凯

11、:参看教材,包括实验教材。问:得面对对象程序设计和vfoxpro有区别吗? 徐孝凯:C+是进行单值的程序设计,VP是面向集合的数据库设计。 问:面向对象的程序设计应尽量使用什么继承? 徐孝凯:一般使用单继承。问:若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上一个什么关键字? 徐孝凯:const问:在本科教学中,我认为要以面向对象程序设计为基本工具,开展相应的教学,包括数据结构的实验,选修软件开发工具与环境(VC+)用VC进行课程设计和毕业设计,以一门语言为突破口,让学生反复练习,在理论和实际应用能力都能得到提高。 徐孝凯:对的,需要同清华统一看法,并付诸实施。

12、 问:可否举例说明一下宏替换的使用? 徐孝凯:看教材。问:面向过程与面向对象的区别和联系?徐孝凯:看教材。计算机科学与技术专业面向对象程序设计(本科)2003年作业练习参考解答第一次作业一、单项选择题1. A2. B 3. A4. D 5. D 6. B7. B 8. C 9. C10. C11. C12. C13. D14.B 15. C 16. B 17. B 18. B 二、填空题1. .cpp 程序文件 2. cout 3. 空白 4. 分号 (;)5. 原型(或声明) 6. void 7. 4 11 8. 0xF5 (F大小写均可) 9. 4 8 10. 15 11. 1 3 12.

13、 true (或1) 13. false(或0) 14. 3*x*y/(x+y) 15. 4 2 16. 6 60 17.0 19 18. 35三、程序填充题1. (1) n=99 (2) i=i3. (1) void fun(char ss) (2) fun(s) (3) in/2四、写出程序运行结果1. 1 2 3 5 8 13 21 34 55 892.11 14 switch end.3.10 6 4五、指出程序或函数的功能1. 计算并输出22+42+62+L+302的值。2.计算并输出1+的值,其中a的值由键盘输入。六、程序改错题1.错误行的行号为:57 8分别改正为:b.InitF

14、ranction(1,3); c=a.FranAdd(b);c.FranOutput()七、编程题1.#includevoid main()int i; /用i作为循环变量int p=1; /用p作为累乘变量int s=1; /用s作为累加循环变量for(i=1;i=10;i+) p*=3; s+=p;coutsendl;2.#includevoid main() int x,max; cinx;max=x; for(int i=0;ix;if(xmax) max=x; coutmax:maxendl;3.#includevoid main()int c1,c2,c3; double x;c1

15、=c2=c3=0;cinx;while(x0) if(x=12) c1+;else if(xx;coutc1 c2 c3endl;第二次作业一、单项选择题1. A 2. D 3. C 4. B 5. A 6. B 7. C 8. B 9. C 10. C 11. A 12. A 13. C 14. A 15. B 16. A 17. D 二、填空题1. switch 2. break 3. 主(或main) 4. 1 2 5. 11 6. 10 19 7. strcpy 8. static 9. 虚拟类型(或类型) 10. static 11. 头文件 12. 代码区 13. i*m+j+1

16、14. 4 15. int* 16. 25 17.42 18. 第一个 修改三、程序填充题1. (1) x/2 (2) x!=0 (3) coutak2. (1) (low+high)/2 (2) return mid (3) low=mid+13. (1) in (2) tablei (3) L=p四、写出程序运行结果1.+*+*2. 10 1 -6 4 0 -3 6 -6 -93.x,y=10, 26x,y=26, 10x,y=10, 26x,y=25, 11五、指出程序或函数的功能1.计算并输出的值,其中N值由键盘输入。2.2.实现字符串系统函数strcpy的功能,把b所指的字符串拷贝到

17、a所指的字符数组空间中。六、程序改错题1. 错误行的行号为: 59 12 分别改正为:public: int CE:GetMin()七、编程题1 int f(int a,int n) if(n=0) return 0; else return an-1*an-1+f(a,n-1); 2 void p(int n) if(n!=0) p(n-1); for(int i=0; in; i+) coutn; coutendl; 3 int AA:MaxMin(int& x, int& y) int mx,my; mx=my=a0; for(int i=1; imx) mx=ai; if(ai0) r

18、eturn 1; else return 0; 第三次作业一、单项选择题1. B2. B 3. B 4. A 5. D 6. C 7. D 8. C 9. C 10. D 11. C 12. A 13. B 14. B 15. D 16. C 17. C 18. D 二、填空题1. *p 2. int(*)63. X4. a5. delete p6. ple7. (*p).name8. 69. 对象 10. 聚合11. 多继承 12. 设计 实现 13. private或私有 14. private 15. 冒号16. 不在 17. *this 18. 队列长度 19. (first+1)%M

19、S三、程序填充题1(1) int& ARRAY:(2) n=s(3) vn (或*(v+n)2 (a) AA:MaxA() (b) x=ai (c) return x3 (a) x.SetA(a,6) (b) x.MaxA() (c) x.PrintA() 四、写出程序运行结果12 1 522 +-*/ abcd 12343 12 20五、指出程序或函数的功能1对于二维字符数组a中保存的M个字符串,分别统计并输出其长度小于5、大于等于5且小于15、大于等于15的字符串个数。2 实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。六、程序改错题1

20、错误行的行号为:1315 17 错误原因分别为:在函数体给常量c赋值 缺少分号 定义z多一个参数七、编程题1 int AA:CompareBig(AA b) int k; if(nb.n) k=b.n; else k=n; for(int i=0; ib.ai) return 1; else if(aib.ai) return -1; if(k=n & k=b.n) return 0; else if(kn) return 1; else return -1; 2 Array:Array(int aa, int nn) n=nn; a=new intn; for(int i=0; in; i+

21、) ai=aai; 3 Array& Array:Give(Array& aa) delete a; n=aa.n; a=new intn; for(int i=0; inext 3. 相同 4. 析构5. 无参构造函数 6. 10 7. 初始化表 8. int& aa;9. 不会 10. 2 11. 3 12. 错误13. 只能 不能 14. 优先级15. 2 16. istream &17. 返回值 空18. 公有和保护 任何 19. 二义性三、程序填充题1. (a) int Stack:Pop() (b) elemtop- (c) Pop()2. (a) a=new intMaxLen

22、(b) return ai; (c) s+=r.GetValue(i)3. (1) Base:output() (2) Base(m1,m2) (3) mem3=m3四、写出程序运行结果1.a: 6/15b: 3/10c: 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 分别改

23、正为friend fract&operator+=(fract&,fract); 和fract&operator+=(fract &f1,fract f2);七、编程题1. Strings:Strings(Strings& str) n=str.n; s=new charn+1; strcpy(s,str.s); 2.class A_class private:int x,y,t;public:A_class(int i,int j):x(i),y(j)if(yx)t=x;x=y;y=t; /其它函数从略 friend int Variance (A_class& ac); /参数名任意;in

24、t Variance (A_class& ac)return ac.x*ac.x-ac.y*ac.y;void main()A_class A_obj(3,5);coutResult:Variance(A_obj)时,其运算符函数的返回值类型应当是_。14. 若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上_和_。三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分) 1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前2

25、0个数,要求每行输出5个数。#includevoid main() int f,f1,f2,i; cout” 斐波那契数列:n”;f1=0; f2=1;coutsetw(6)f1setw(6)f2;for(i=3;i=20;i+) f=_(1)_; coutsetw(6)f;if(_(2)_) coutendl;fi=f2;f2=_(3)_; coutendl; (1) (2) (3) 2. 假定有定义为“struct NODEint data; NODE* next;”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。void f5

26、(NODE*& L, int table, int n) if(nnext=_(2)_; p-data=_(3)_; i+; p-next=NULL; /把最后一个结点的指针域置空 p=L; L=L-next; /使L指向链表的第一个带值的结点 delete p; (1)(2)(3) 3class A int a;public:A() a=0;_(a)_ /定义构造函数,用参数aa初始化数据成员a;main() _(b)_; /定义类A的指针对象p_(c)_; /用p指向动态对象并初始化为整数5 答案:(a) (b) (c)四、写出程序运行结果(每小题6分,3小题,共18分)1. #inclu

27、de#include int a4=36,-5,73,8;void main()int i,y;for(i=0; i4; i+) if(ai0) y=1;else if(ai10) y= ai* ai+3;else if(ai60) y=4*ai-5;else y=int(sqrt(ai); / sqrt(x)为取x的平方根函数coutsetw(5)aisetw(5)y; 2. #includeconst int N=5;void fun();void main()for(int i=1; iN; i+) fun();void fun() static int a;int b=2;cout(a

28、+=3,a+b) ; 3. #include class Date public: Date(int y=2001,int m=1,int d=1)Year=y; Month=m; Day=d; void PrintDate() coutYear/Month/Dayendl; protected: int Year,Month,Day;class Time public: Time(int h=5,int m=30,int s=0)Houre=h; Minutes=m; Seconds=s; void PrintTime() coutHoure:Minutes:Secondsendl; pro

29、tected: int Houre, Minutes, Seconds;class Date_Time: public Date, public Time public: Date_Time( ); Date_Time(int y,int mo,int d,int h=0,int mi=0,int s=0): Date(y,mo,d), Time(h,mi,s) void PrintDate_Time()PrintDate();PrintTime();void main( ) Date_Time a, b(2002,10,1,6,20,0), c(2003,3,8,6,7); a.PrintD

30、ate_Time(); b.PrintDate_Time(); c.PrintDate_Time();五、指出程序或函数的功能(每小题6分,2小题,共12分)1. #include#includevoid main()int x,y;cinx; y=int(sqrt(x); /sqrt(x)为求x的算术平方根for(int i=1;i=y;i+)if(x%i=0) cout”x=”i*x/inext;return c; 假定IntNode的类型定义为: struct IntNode int data; /结点值域 IntNode* next; /结点指针域 ;六、程序改错。请根据程序段或函数模

31、块的功能改写个别地方的错误(每小题6分,共6分)。1. 在下面的定义中,NODE是链表结点的结构,addToList则是一函数,其功能是:将一个值为x的新结点添加到以plist为表头指针的链表的首部(即第一个结点的前面)并返回表头指针。函数中第3行和第5行有错误,请分别改正。struct NODEint data;NODE *next;NODE* adndToList(NODE * plist,int x) /1行NODE *p; /2行*p=new NODE; /3行p-data=x; /4行p-next=NULL; /5行plist=p; /6行 return p; /7行分别改正为_和_

32、。七、编程(每小题8分,2小题,共16分)1. 已知,求出并显示当x分别取-3.8, 6.4, 2.3, -4.2,8.9, 3.5, -5.0, 4.5时所对应的y值,要求把a定义为常量,其值设定为10.2,x的每个值由键盘输入,并假定用-100作为终止标志,求平方根函数为sqrt(x)。 2. 根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。class AA int* a;int n;int MS;public:void InitAA(int aa, int nn, int ms) if(nnms) coutError!endl; exit(1);MS=ms;n=nn;a

33、=new intMS;for(int i=0; in; i+) ai=aai;AA* Reverse1(); /通过动态存储分配得到一个AA类对象,并动态分配 /aMS数组空间,要求该对象中的n和MS的值与*this中的 /对应成员的值相同,数组元素的值是按照*this中数组元 /素的相反次序排列得到的,要求该函数返回动态对象的地址。;中央广播电视大学计算机科学与技术专业面向对象程序设计试题(2)参考解答及评分标准2003年3月一、单项选择(每小题1分,12小题,共12分)1. C 2. A 3. C 4. B 5. C 6. D7. D 8. A 9. A 10. A 11. A 12. B

34、二、填空(每空1分,14小题,18个空,共18分)1. .cpp程序 2. int 03. x 4. switch5. ”456” 6. 全局数据 7. a+i*sizeof(ai)8. 0 (或0)9. 问题域应用 10. 类定义 11. 构造 12. 213. istream &14. 类名 类区分符三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分) 1. (1) f1+f2 /2分(2) i%5=0 /2分(3) f /2分2.(1) inext=plist;七、编程(每小题8分,2小题,共16分)1.

35、根据完整程度酌情给分。#include#includeconst double a=10.2; void main()double x,y;cinx; while(x!=-100) if(x=0) y=sqrt(a*a+x*x); else y=3*a*x*x+4*a*x-1;coutx yx;2. 请根据完整程度酌情给分。AA* AA:Reverse1() AA *px=new AA; px-n=n; px-MS=MS; px-a=new intMS; for(int i=0; ian-1-i=ai; return px;中央广播电视大学计算机科学与技术专业面向对象程序设计试题(4)2003

36、年8月题 号一二三四五六七总 分得 分一、单项选择(每小题1分,共13分)1. 字符串”a+b=12n”的长度为( )。A. 6 B. 7 C. 8 D. 92. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a21的值为( )。A. 0 B. 4 C. 8 D. 63. 以下正确的描述是( )。A. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套4. 设有定义“double array10;”,则表达式sizeof(array)/sizeof(array0)的结果为( )。A. array数组首地址 B. array数组中元素个数 C. array数组中每个元素所占的字节数 D. array数组占的总字节数 5. 要使p指向动态空间中的包含30个整数单元的数组使用的定义语句为( )。 A. int *p=new int30; B. int *p=new int(30); C. int *p=new 30; D. *p=new int30;6. 软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( )。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 7. 在多文件结构的

温馨提示

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

评论

0/150

提交评论