2022年面向对象程序设计网上教学活动文本 .docx
精品_精品资料_面对对象程序设计网上教案活动文本(2022.10.20)唐龙: 同学们现在开头答疑,请大家提问.问: 怎样学好这门课程?唐龙: 最简洁一句话说是:在初步懂得主要基本概念的基础上多上机实践.问: 在 C+ 进行程序开发时,遇到大批量的数据需要处理时,是用函数仍是结构链,是不是仍有其它的方法?唐龙: 这不能一概而论,要看所处理的是什么数据,有什么处理要求,先要挑选采纳合理的数据结构和算法,才可能开发出适用的程序.问: 我们怎样才能考好这门课程?它的考试卷型有哪些? 徐孝凯:1. 仔细听好老师的面授辅导课.2. 仔细依据试验教材的要求做好每个试验.3. 仔细做好形成性作业.4. 到期末复习阶段,依据试验教材的附录中所给的综合练习题反复做好练习.5. 参考以前考过的试卷,题型基本不变.问: 面对对象程序设计的重点内容?唐龙: 本课程着重对C+ 语言的基本概念和语法规章懂得,把握其使用方法,进而初步学会运用于实际编程.最重要的基本概念,例如,类与对象,继承,重载等肯定要清晰理解,并学会在简洁的编程应用.徐孝凯: 往届试卷,供同学们复习时参考中心广播电视高校运算机科学与技术专业面对对象程序设计试卷(3)2022 年 8 月题 号得 分一二三四五六七总 分一、单项挑选(每道题1 分,共 12 分)1设 x 和 y 均为 bool 量,就 x|y为假的条件是 .A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假2.假定一个二维数组的定义语句为“int a34=3,4,2,8,6.”,就元素a12可编辑资料 - - - 欢迎下载精品_精品资料_的值为().A. 2B. 4C. 6D. 83. 以下错误的描述是().函数调用可以A. 显现在一个表达式中B.显现在执行语句中C.作为一个函数的实参D.作为一个函数的形参4. 关于局部变量,下面说法正确选项.A. 定义该变量的程序文件中的函数都可以拜访B. 定义该变量的函数中的定义处以下的任何语句都可以拜访C. 定义该变量的复合语句中的定义处以下的任何语句都可以拜访D. 定义该变量的函数中的定义处以上的任何语句都可以拜访5. 假定 p 是具有 int*类型的指针变量,就给p 赋值的正确语句为().A. p=new int. B. p=new int*. C. p=new int*. D. p=new int10.6. 软件产品在需求发生变化、运行环境发生变化或发觉软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的().A. 可爱护性B.可复用性C.兼容性D.正确性7. 如需要把一个类外定义的成员函数指明为内联函数,就必需把关键字()放在函数原型或函数头的前面.A. inB. inlineC. inLineD. InLiner8. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为 length ,就队尾的后一个位置为.A. length+1B. first+lengthC. first+length-1%MSD. first+length%MS9. 假定一个类的构造函数为“Aint aa, int bb a=aa. b=aa*bb . ”,就执行“A x4,5.”语句后, x.a 和 x.b 的值分别为 .A. 4和 5B. 5和 4C. 4和 20D. 20和 510. 假定 AB 为一个类,就执行“ AB *p=new AB1,2.”语句时共调用该类构造函数的次数为 .A. 0B. 1C. 2D. 311. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明().A.需加上类域的限定B.不需加上类域的限定C.类域的限定可加可不加D.不需要任何限定12. 关于插入运算符 <<的重载,以下说法不正确选项().A. 运算符函数的返回值类型是ostream &.可编辑资料 - - - 欢迎下载精品_精品资料_B. 重载的运算符必需定义为类的成员函数.C. 运算符函数的第一个参数的类型是ostream &.D. 运算符函数有两个参数.二、填空(每空 1 分,共 14 分)1. 当执行 cout语句输出 endl数据项时,将使C+显示输出屏幕上的光标从当前位置移动到的开头位置.2. 假定x和 y为整型,其值分别为16 和 5,就x/y和 doublex/y的值分别为 和.3. 执行 switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当遇到下一个标号位置时 执行.4. strlen”apple ” 的值为, strcmp ”a”, ”A” 的值为.5. C+ 程序运行时的内存空间可以分成全局数据区,堆区,栈区和 区.6. 假定 a 是一个一维指针数组,就a+i 所指对象的的址比a 大字节.7. 已知语句“cout<<p .”的输出是“Hello.”,就语句“cout<<*p .”输出的是 .8. 假如一个派生类只有一个唯独的基类,就这样的继承关系称为 .9 假定 AA 是一个类,“ AA* abcconst.”是该类中一个成员函数的原型,在该函数体中向*this或其成员赋值.10 假定用户没有给一个名为AB 的类定义构造函数,就系统为其定义的构造函数为 .11. 假定用户为类AB 定义了一个构造函数 "ABint aa a=aa." ,该构造函数实现对数据成员的初始化.12. 作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 个操作数.三、程序填充,对程序、函数或类中划有横线的位置,依据题意按标号把合适的内容填写到程序下面相应标号的后面(每道题6 分,共 24 分)101 i 1i 1x ii.1. 下面程序运算出的值.#include<iostream.h> void main可编辑资料 - - - 欢迎下载精品_精品资料_double x,p1=1,p2=1,s=0.int i,j=1.cout<<"输入 x 的值 :" .cin>>x.fori=1.i<=10 .i+ p1*=1 .p2*=2 .s+=j*p1/p2. /j的值为 -1j=3.cout<<s<<endl.123i+12. 假定有定义为“ struct NODEint data. NODE* next . .”,下面算法是依次显示输出以 L 为表头指针的链表中各结点的值.void ffNODE* Lfor1. p.=NULL . 2cout<<3<<' '.cout<<endl.1233. 假定有定义为“ struct NODEint data. NODE* next . .”,下面算法是把以L 为表头指针的链表中各结点依次按相反次序链接并返回新链表的表头指针.NODE* f8NODE* LifL=NULL return NULL.NODE *p=NULL, *q=L, *t.whileq.=NULL t=q.q=1.可编辑资料 - - - 欢迎下载精品_精品资料_ 3.t->next=2.p=t.可编辑资料 - - - 欢迎下载精品_精品资料_123可编辑资料 - - - 欢迎下载精品_精品资料_4. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10class Stack .public:void Init top=-1. /初始化栈为空void Pushint newElem. /向栈中压入一个元素int Pop. /从栈顶弹出一个元素bool Empty /判栈空iftop=-1 return true.else return false. int Depth return top+1. /返回栈的深度void Print./依据后进先出原就依次输出栈中每个元素,直到栈空为止private:int elemARRAY_SIZE. /用于储存堆栈元素的数组int top. /指明栈顶元素位置的指针 .该类的 Pop 和 Print函数的实现分别如下: 1iftop=-1 cout<<" 栈空."<<endl.exit1. /中止运行return2.void Stack:Print while.Emptycout<<3<<' '.cout<<endl. 123四、写出程序运行结果(每道题8 分,共 16 分)1. #include<iostream.h>int a8=36,25,20,43,12,70,66,35.void mainint s0,s1,s2.s0=s1=s2=0 .forint i=0. i<8 . i+ switchai%3 case 0: s0+=ai.break .可编辑资料 - - - 欢迎下载精品_精品资料_case 1: s1+=ai.break .case 2: s2+=ai.break .cout<<s0<< <<s1<< <<s2<<endl .2. #include<iostream.h> #include<string.h>class CD 可编辑资料 - - - 欢迎下载精品_精品资料_public:char* a.int b.void Initchar* aa, int bb可编辑资料 - - - 欢迎下载精品_精品资料_a=new charstrlenaa+1.strcpya,aa.b=bb.char* Geta return a. int Getb return b.void Output cout<<a<<' '<<b<<endl.void mainCD dx,dy.char a20.dx.Init"abcdef",30.strcpya,dx.Geta.strcata,"xyz".dy.Inita,dx.Getb+20.dx.Output.dy.Output.可编辑资料 - - - 欢迎下载精品_精品资料_五、指出程序或函数的功能(每道题6 分,共 12 分)1. #include<iostream.h> #include<stdlib.h> #include<math.h>void mainint i=10,a.whilei>0 a=rand%90+10.int j, k=intsqrta+1e-5. /sqrtx为求 x 的平方根函数forj=2. j<=k . j+ifa%j=0 break.ifj>k cout<<a<<' '. i-.2. voidInputIntNode*& fint n.cout<<”从键盘给 n 输入一个整数 : ”.do cin>>n. whilen<0.ifn=0 f=NULL. return. f=new IntNode.IntNode* p=f.cout<<”从键盘输入 ”<<n<<”个整数 : ”. whilen- p=p->next=new IntNode.cin>>p->data.p->next =NULL.p=f. f=f->next. delete p.假定 IntNode的类型定义为:struct IntNode int data./结点值域IntNode* next. /结点指针域.可编辑资料 - - - 欢迎下载精品_精品资料_六、程序改错,请依据程序段或函数模块的功能改写个别的方的错误(6 分).假定要求下面程序的输出结果为“11/15 ” , 其主函数中存在着三行语句错误,请指出错误语句行的行号并改正错误行.#include<iostream.h>class Franction /定义分数类int nume. /定义分子int deno. /定义分母public:/把*this化简为最简分数,详细定义在另外文件中实现void FranSimp./返回两个分数 *this和 x 之和,详细定义在另外文件中实现Franction FranAddconst Franction& x./置分数的分子和分母分别0 和 1void InitFranction nume=0. deno=1 ./置分数的分子和分母分别n 和 dvoid InitFranctionint n, int d nume=n. deno=d ./输出一个分数void FranOutput cout<<nume<<'/'<<deno<<endl.void main/1行/2行Franction a,b,c./3行a.InitFranction6,15./4行b.InitFranction1./5行c.InitFranction./6行c=FranAdda,b./7行cout<<c.nume<</ <<c.deno<<endl./8行/9行错误行的行号为、和.10分别改正为、和.七、编程(每道题8 分,共 16 分)可编辑资料 - - - 欢迎下载精品_精品资料_21.运算 1+3+3 +.+3量的标识符.的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变可编辑资料 - - - 欢迎下载精品_精品资料_2.依据下面类中 Uion函数的原型和注释写出它的类外定义.class Array int *a. /指向动态安排的整型数组空间int n. /记录数组长度可编辑资料 - - - 欢迎下载精品_精品资料_public:Arrayint aa, int nn. /构造函数,利用 aa 数组长度 nn 初始化 n,/利用 aa 数组初始化 a 所指向的数组空间ArrayArray& aa. /拷贝构造函数Array& GiveArray& aa. /实现 aa 赋值给 *this的功能并返回 *this可编辑资料 - - - 欢迎下载精品_精品资料_Array UionArray& aa. /实现 *this和 aa 中的数组合并的功能,把合并/结果 其长度为两数组长度之和 存入暂时对象并返回int Lenth return n. /返回数组长度void Print /输出数组forint i=0. i<n . i+cout<<ai<<' '.cout<<endl. .中心广播电视高校运算机科学与技术专业面对对象程序设计试卷答案及评分标准(供参考)一、单项挑选(每道题1 分,共 12 分)1. C2. C3. D4. C5. B6. A7. B8. D9. C10. B11. A12. B可编辑资料 - - - 欢迎下载精品_精品资料_二、填空(每空 1 分,共 14 分)1.下一行2. 3 3.23.不停止4. 5 15.代码6.4*i7.H8.单继承9.不能够10. AB 11. a12. 2三、程序填充,对程序、函数或类中划有横线的位置,依据题意按标号把合适的内容填写到程序下面相应标号的后面(每道题6 分,共 24 分)1.1 x/2分2 i/2分3j/2分2.(1) NODE* p=L/2分(2) p=p->next/2分(3) p->data/2分31 q->next/2分2 p/2分(3) return p/2分4.(a) int Stack:Pop/2分(b) elemtop-/2分(c) Pop/2分四、写出程序运行结果(每道题8 分,共 16 分)1. 114 138 55/每个数据占 3 分,全对给 8 分2.abcdef 30/4分,每个数据 2 分abcdefxyz 50/4分,每个数据 2 分五、指出程序或函数的功能(每道题6 分,共 12 分)1. 随机产生出 10 个 10 至 100(或 99)之间的素数并显示出来.2. 第一从键盘上输入一个整数给n,然后依次输入 n 个整数建立以表头指针为f 的链表.评分标准:依据表达情形酌情给分.六、程序改错,请依据程序段或函数模块的功能改写个别的方的错误(6 分).错误行的行号为 57 8分别改正为 b.InitFranction1,3. c=a.FranAddb. c.FranOutput评分标准:共6 个数据,每个数据1 分.可编辑资料 - - - 欢迎下载精品_精品资料_七、编程(每道题8 分,共 16 分) 评分标准:依据编程情形酌情给分.1.#include<iostream.h> void mainint i. /用 i 作为循环变量int p=1. /用 p 作为累乘变量int s=1. /用 s 作为累加循环变量fori=1.i<=10 . i+ p*=3. s+=p . cout<<s<<endl.2.Array Array:UionArray& aa int k=n+aa.n.int* w=new intk.int i.fori=0. i<n . i+ wi=ai.fori=0. i<aa.n. i+ wi+n=aa.ai.Array rw,k.return r.中心广播电视高校运算机科学与技术专业面对对象程序设计试卷(4)2022 年 8 月题号一二三四五六七总 分得分一、单项挑选(每道题1 分,共 13 分)1.字符串 ”a+b=12n ”的长度为().A. 6B. 7C. 8D. 92.假定一个二维数组的定义语句为“int a34=3,4,2,8,6.”,就元素a21的值为().A. 0B. 4C. 8D. 6可编辑资料 - - - 欢迎下载精品_精品资料_3. 以下正确的描述是().A. 函数的定义可以嵌套,函数的调用不行以嵌套B. 函数的定义不行以嵌套,函数的调用可以嵌套C. 函数的定义和函数的调用均可以嵌套D. 函数的定义和函数的调用均不行以嵌套4. 设有定义“ double array10.”,就表达式sizeofarray/sizeofarray0的结果为 .A. array数组首的址B. array数组中元素个数C. array数组中每个元素所占的字节数D. array数组占的总字节数5. 要使 p 指向动态空间中的包含30 个整数单元的数组使用的定义语句为().A. int *p=new int30.B. int *p=new int30.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.假定一个类的构造函数为“x4 .”语句后, x.a 和 x.bAint aa=1, int bb=0 a=aa的值分别为 . b=bb . ”,就执行“AA. 1和 0B. 1和 4C. 4和 1D. 4和 010. 假定 AB 为一个类,就执行“ AB a2, b3, *p4.”语句时共调用该类构造函数的次数为 .A. 3B. 4C. 5D. 911. 在成员函数中进行双目运算符重载时,其参数表中应带有()个参数.A. 0B. 1C. 2D. 312. 在重载一运算符时,如运算符函数的形参表中没有参数,就不行能的情形是().A. 该运算符是一个单目运算符.B. 该运算符函数有一个隐含的参数this .C. 该运算符函数是类的成员函数.D. 该运算符函数是类的友元函数.可编辑资料 - - - 欢迎下载精品_精品资料_13. 派生类的对象对其基类中()可直接拜访.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 =”Hello, word.”. char *pc.”,要将 pv 值赋给 pc,就正确的赋值语句是 .9. C+ 支持两种多态性:时的多态性和时的多态性.10. 在一个用数组实现的队列类中,除了储存队列元素的叔祖成员外,仍包含有两个数据成员,一个指明队首元素位置,另一个指明队列 .11 一个类的函数通常用于实现释放该类对象中指针成员所指向的动态储备空间的任务.12. 假 定 用 户 为 类 AB定 义 了 一 个 构 造 函 数 “ ABintaa,char*bb=NULL:aaa,bbb”,就该类中至少包含有个数据成员.13. 重载插入运算符 <<时,其运算符函数的返回值类型应当是.三、程序填充,对程序、函数或类中划有横线的位置,依据题意按标号把合适的内容填写到程序下面相应标号的后面(每道题6 分,共 18 分)1. 打印出 2 至 99 之间的全部素数 即不能被任何数整除的数 .#include<iostream.h> #include<math.h>可编辑资料 - - - 欢迎下载精品_精品资料_void mainint i,n.forn=2. 1. n+ int temp=intsqrtn. /求出 n 的平方根并取整fori=2. 2.i+ifn%i=03 .ifi>temp cout<<n<<' '.cout<<'n'. 1232. 下面是对按从小到大排列的有序数组an 中进行二分查找x 的算法,如查找胜利返回该元素下标,否就返回-1 .int BinarySearchint a,int n,int xint low=0, high=n-1. /定义并初始化区间下界和上界变量int mid. /定义储存中点元素下标的变量whilelow<=high mid=1.ifx=amid2.else ifx<amid high=mid-1.else3.return -1. 1233class A int a,b.public:Aint aa=0, int bb=01 /分别用 aa 和 bb 对应初始化 a 和 b .可编辑资料 - - - 欢迎下载精品_精品资料_main 2 3 . /定义类 A 的对象 x 并用 5 初始化,同时定义y 并用 x 初始化. /定义 p 指针,使之指向对象x可编辑资料 - - - 欢迎下载精品_精品资料_123可编辑资料 - - - 欢迎下载精品_精品资料_四、写出程序运行结果(每道题6 分,共 18 分)1. #include<iomanip.h> const int N=5. void mainint i,p=1,s=0.fori=1.i<N . i+ p=p*i .s=s+p.cout<<setw5<<i<<setw5<<p.cout<<setw5<<s<<endl.2. #include<iostream.h> void mainchar s35="1234","abcd","+-*/".char *p3.forint i=0.i<3 .i+ pi=si.fori=2.i>=0 .i- cout<<pi<<' '.cout<<endl .3.#include <iostream.h> class Datepublic:void SetDateint y,int m,int d Year=y. Month=m. Day=d . void PrintDate cout<<Year<<"/"<<Month<<"/"<<Day<<endl. DateSetDate2022,1,1.Dateint y,int m,int dSetDatey,m,d. protected:int Year,Month,Day. .可编辑资料 - - - 欢迎下载精品_精品资料_class Timepublic:void SetTimeint h,int m,int s Houre=h. Minutes=m . Seconds=s . void PrintTime cout<<Houre<<":"<<Minutes<<":"<<Seconds<<endl. TimeSetTime0,0,0.Timeint h,int m,int sSetTimeh,m,s.protected:int Houre, Minutes, Seconds. .class Date_Time: public Date, public Timepublic:Date_Time :Date,Time.Date_Timeint y,int mo,int d,int h,int mi,int s: Datey,mo,d, Timeh,mi,svoid PrintDate_TimePrintDate.PrintTime. .void main Date_Time dt_a, dt_b2022,10,1,6,0,0.dt_a.PrintDate_Time.dt_b.SetTime23,59,59.dt_b.PrintDate_Time.dt_a.SetDate2022,12,31.dt_a.PrintDate_Time.五、指出程序或函数的功能(每道题6 分,共 12 分)1. #include<iostream.h> double f1int n double sign=1,s=1.forint i=2.i<=n . i+ 可编辑资料 - - - 欢迎下载精品_精品资料_s+=sign/i*i.sign*=-1.return s.void mainint a.cin>>a .cout<<f1a<<endl.2. voidOutputIntNode *fif.f return.whilef cout<<f->data<<.f=f->next.cout<<endl.假定 IntNode的类型定义为:struct IntNode int data./结点值域IntNode* next. /结点指针域.六、程序改错,请依据程序段或函数模块的功能改写个别的方的错误(6 分)下面是一个类的定义,存在着3 处语法错误 有的为单个字符 ,请指出错误行的行号并改正.class CE /1行private:/2行int a,b./3行int getmin return a<b. a:b./4行public/5行int c./6行void SetValueint x1,int x2, int x3 /7行a=x1. b=x2 . c=x3 ./8行可编辑资料 - - - 欢迎下载精品_精品资料_./9行int GetMin./10行 ./11行int GetMin /12行int d=getmin./13行return d<c. d:c./14行/16行错误行的行号为、和.分别改正为、和.七、编程(每道题8 分,共 16 分)22