《2022年面向对象程序设计网上教学活动文本.docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计网上教学活动文本.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 面对对象程序设计网上教案活动文本(2004.10.20)唐龙: 同学们现在开头答疑,请大家提问;问: 怎样学好这门课程?唐龙: 最简洁一句话说是:在初步懂得主要基本概念的基础上多上机实践;问: 在 C+进行程序开发时,遇到大批量的数据需要处理时,是用函数仍是结构链,是不 是仍有其它的方法?唐龙: 这不能一概而论,要看所处理的是什么数据,有什么处理要求,先要挑选采纳合理 的数据结构和算法,才可能开发出适用的程序;问: 我们怎样才能考好这门课程?它的考试卷型有哪些?徐孝凯:1.仔细听好老师的面授辅导课;2.仔细依据试验教材的要求做好每个试验;3.仔
2、细做好形成性作业;4.到期末复习阶段,依据试验教材的附录中所给的综合练习题反复做好练习;5.参考以前考过的试卷,题型基本不变;问: 面对对象程序设计的重点内容?唐龙: 本课程着重对 C+ 语言的基本概念和语法规章懂得,把握其使用方法,进而初步学 会运用于实际编程;最重要的基本概念,例如,类与对象,继承,重载等肯定要清晰理 解,并学会在简洁的编程应用;徐孝凯: 往届试卷,供同学们复习时参考中心广播电视高校运算机科学与技术专业面对对象程序设计试卷(3)2003 年 8 月题 号一二三四五六七总 分得 分一、单项挑选(每道题 1 分,共 12 分)1设 x 和 y 均为 bool 量,就 x|y为假
3、的条件是 ;” ,就元素a12A. 它们均为真 B. 其中一个为真C. 它们均为假 D. 其中一个为假2. 假定一个二维数组的定义语句为“int a34=3,4,2,8,61 / 21 名师归纳总结 - - - - - - -第 1 页,共 21 页精选学习资料 - - - - - - - - - 的值为();A. 2 B. 4 C. 6 D. 8 3. 以下错误的描述是();函数调用可以A. 显现在一个表达式中 B. 显现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参4. 关于局部变量,下面说法正确选项 ;A. 定义该变量的程序文件中的函数都可以拜访 B. 定义该变量的函数
4、中的定义处以下的任何语句都可以拜访 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. 如需要把一个类外定义的成员函数指明为内联函数,就必需把
5、关键字()放在函数原型或函数头的前面;A. in B. inline C. inLine D. InLiner 8. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为 length ,就队尾的后一个位置为 ;A. length+1 B. first+length C. first+length-1%MS D. first+length%MS 9. 假定一个类的构造函数为“Aint aa, int bb a=aa; b=aa*bb ; ” ,就执行“A x4,5;” 语句后, x.a 和 x.b 的值分别为 ; A. 4 和 5B. 5 和 4 C. 4 和
6、20D. 20 和 5 10. 假定 AB 为一个类,就执行“AB *p=new AB1,2;” 语句时共调用该类构造函数的次数为 ; A. 0B. 1C. 2D. 3 11. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明();A. 需加上类域的限定 B. 不需加上类域的限定C. 类域的限定可加可不加 D. 不需要任何限定 12. 关于插入运算符 的重载,以下说法不正确选项();A. 运算符函数的返回值类型是 ostream & ;2 / 21 名师归纳总结 - - - - - - -第 2 页,共 21 页精选学习资料 - - - - - - - - - B. 重载的运算符必
7、需定义为类的成员函数; 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” 的值为 _
8、;5. C+ 程序运行时的内存空间可以分成全局数据区,堆区,栈区和_区;6假定 a 是一个一维指针数组,就 a+i 所指对象的地址比 a 大_字节; 7. 已知语句“coutp ;” 的输出是“Hello.” ,就语句“cout*p ;” 输出的是_;8. 假如一个派生类只有一个唯独的基类,就这样的继承关系称为 _; 9 假定 AA是一个类,“AA* abcconst;” 是该类中一个成员函数的原型,在该函数体中_向*this 或其成员赋值; 10假定用户没有给一个名为 AB 的类定义构造函数,就系统为其定义的构造函数为_;11假定用户为类AB 定义了一个构造函数ABint aa a=aa;
9、,该构造函数实现对数据成员 _的初始化; 12. 作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有_个操作数;三、程序填充,对程序、函数或类中划有横线的位置,依据题意按标号把合适的内容填写到程序下面相应标号的后面(每道题6 分,共 24 分)的值;1. 下面程序运算出101 i1xii1i. #include void main 3 / 21 名师归纳总结 - - - - - - -第 3 页,共 21 页精选学习资料 - - - - - - - - - double x,p1=1,p2=1,s=0;的值为 -1i+1 int i,j=1; coutx; fori=1;i
10、=10 ;i+ p1*=_1_ p2*=_2_; s+=j*p1/p2; /j j=_3_; coutsendl; 1 2 3 2. 假定有定义为“struct NODEint data; NODE* next ; ;” ,下面算法是依次显示输出以 L 为表头指针的链表中各结点的值;void ffNODE* L for_1_; p.=NULL ; _2_ cout_3_ ; coutnext=_2_; p=t _3_ ; 1 2 3 4 / 21 名师归纳总结 - - - - - - -第 4 页,共 21 页精选学习资料 - - - - - - - - - 4. 已知一个利用数组实现栈的类定
11、义如下:const int ARRAY_SIZE=10;class 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; / 用于储存堆栈元素的数组in
12、t top; / 指明栈顶元素位置的指针 ;该类的 Pop 和 Print 函数的实现分别如下:_1_ iftop=-1 cout 栈空 .endl;exit1; / 中止运行 return _2_; void Stack:Print while.Empty coutendlcout_3_ ; 123 四、写出程序运行结果(每道题 8 分,共 16 分)1. #include int a8=36,25,20,43,12,70,66,35;void main int s0,s1,s2;s0=s1=s2=0;forint i=0; i8 ; i+ switchai%3 case 0: s0+=ai
13、;break ;5 / 21 名师归纳总结 - - - - - - -第 5 页,共 21 页精选学习资料 - - - - - - - - - case 1: s1+=ai;break ;case 2: s2+=ai;break ; couts0 s1 s2endl ; 2#include #include class CD char* a; int b public: void Initchar* aa, int bb a=new charstrlenaa+1; strcpya,aa; b=bb char* Geta return a; ; int Getb return b; void O
14、utput couta bendl;void main CD dx,dy; char a20; dx.Initabcdef,30 strcpya,dx.Geta; strcata,xyz; dy.Inita,dx.Getb+20 dx.Output; dy.Output; 6 / 21 名师归纳总结 - - - - - - -第 6 页,共 21 页精选学习资料 - - - - - - - - - 五、指出程序或函数的功能(每道题 6 分,共 12 分) 1. #include #include #include void main int i=10,a;whilei0 forj=2 a=ra
15、nd%90+10; /sqrtx为求 x 的平方根函数 int j, k=intsqrta+1e-5; jk couta ; i-; 2. voidInputIntNode*& f int n; coutn; whilen0 ifn=0 f=NULL; return; f=new IntNode; IntNode* p=f;”从键盘输入 ”n”个整数 : ”; coutnext=new IntNode; cinp-data; p-next =NULL; delete p; p=f; f=f-next 假定 IntNode 的类型定义为: struct IntNode int data; /结点
16、值域 IntNode* next; /结点指针域;7 / 21 名师归纳总结 - - - - - - -第 7 页,共 21 页精选学习资料 - - - - - - - - - 六、程序改错,请依据程序段或函数模块的功能改写个别地方的错误(6 分);假定要求下面程序的输出结果为“错误语句行的行号并改正错误行; #include 11/15 ” , 其主函数中存在着三行语句错误,请指出 class Franction /; /定义分数类 int nume定义分子 int deno; /定义分母 public: / 把*this 化简为最简分数,详细定义在另外文件中实现void FranSimp;
17、 / 返回两个分数 *this 和 x 之和,详细定义在另外文件中实现Franction FranAddconst Franction& x; / 置分数的分子和分母分别 0 和 1 void InitFranction nume=0; deno=1 ; / 置分数的分子和分母分别 n 和 d void InitFranctionint n, int d nume=n; deno=d ; / 输出一个分数void FranOutput coutnume/denoendl; ;void main /1 行 /2 行 Franction a,b,c; /3 行 a.InitFranction6,1
18、5; /4 行 b.InitFranction1; /5 行c.InitFranction; /6 行 c=FranAdda,b; /7 行 coutc.nume / c.denoendl ; /8 行 /9 行错误行的行号为 _、_和_;分别改正为 _ 、_和_ ;七、编程(每道题 8 分,共 16 分)1. 运算 1+3+3 2+.+3 10 的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符;8 / 21 名师归纳总结 - - - - - - -第 8 页,共 21 页精选学习资料 - - - - - - - - - 2. 依据下面类中 Uion 函数的原型和注释写
19、出它的类外定义;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
20、 return n; / 返回数组长度void Print / 输出数组forint i=0; in ; i+ coutai ; coutnext /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 分五、指出程序或函数的功能(每道题
21、 6 分,共 12 分)1随机产生出 10 个 10 至 100(或 99)之间的素数并显示出来;2第一从键盘上输入一个整数给 n,然后依次输入 n 个整数建立以表头指针为 f 的链表;评分标准:依据表达情形酌情给分;六、程序改错,请依据程序段或函数模块的功能改写个别地方的错误(6 分);错误行的行号为 57 8 分别改正为 b.InitFranction1,3; c=a.FranAddb; c.FranOutput 评分标准:共 6 个数据,每个数据 1 分;10 / 21 名师归纳总结 - - - - - - -第 10 页,共 21 页精选学习资料 - - - - - - - - - 七
22、、编程(每道题 8 分,共 16 分)评分标准:依据编程情形酌情给分; 1. #include void main int i; / 用 i 作为循环变量int p=1; / 用 p 作为累乘变量int s=1; / 用 s 作为累加循环变量fori=1;i=10 ; i+ p*=3; s+=p ; coutsendl ; 2. Array Array:UionArray& aa int k=n+aa.n; int* w=new intk; int i; fori=0; in ; i+ wi=ai; fori=0; iaa.n; i+ wi+n=aa.ai; Array rw,k; retur
23、n r; 中心广播电视高校运算机科学与技术专业面对对象程序设计试卷(4)2003 年 8 月题 号一二三四五六七总 分得 分一、单项挑选(每道题 1 分,共 13 分)1. 字符串 ” a+b=12n ” 的长度为();A. 6 B. 7 C. 8 D. 9 2. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;” ,就元素a21的值为();A. 0 B. 4 C. 8 D. 6 11 / 21 名师归纳总结 - - - - - - -第 11 页,共 21 页精选学习资料 - - - - - - - - - 3. 以下正确的描述是();A. 函数的定义可以嵌套,函数的调用不
24、行以嵌套 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=ne
25、w 30; D. *p=new int30;6. 软件产品与其他软件产品组合成一个整体的难易程度叫做软件的(); A. 可爱护性 B. 可复用性 C. 兼容性 D. 正确性 7. 在多文件结构的程序中,通常把类的定义单独存放于()中; A. 主文件 B. 实现文件 C. 库文件 D. 头文件8. 在一个用数组实现的队列类中,假定数组长度为 MS,队首元素位置为 first,队列长度为 length ,就队首的后一个位置为 ;A. first+1 B. first+1%MS C. first-1%MS D. first+length%MS 9. 假定一个类的构造函数为“Aint aa=1, in
26、t bb=0 a=aa; b=bb ; ” ,就执行“A x4 ;” 语句后, x.a 和 x.b 的值分别为 ;和 0 A. 1和 0 B. 1和 4 C. 4和 1 D. 4 10. 假定 AB为一个类,就执行“AB a2, b3, *p4;” 语句时共调用该类构造函数的次数为 ; A. 3B. 4C. 5D. 9 11. 在成员函数中进行双目运算符重载时,其参数表中应带有()个参数;A. 0 B. 1 C. 2 D. 3 12. 在重载一运算符时,如运算符函数的形参表中没有参数,就不行能的情形是();A. 该运算符是一个单目运算符; B. 该运算符函数有一个隐含的参数this ; C.
27、该运算符函数是类的成员函数; D. 该运算符函数是类的友元函数;12 / 21 名师归纳总结 - - - - - - -第 12 页,共 21 页精选学习资料 - - - - - - - - - 13. 派生类的对象对其基类中()可直接拜访; A. 公有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的爱护成员 D. 私有继承的公有成员二、填空(每空 1 分,共 17 分) 1. 多行注释的开头标记符和终止标记符分别为 _和_;2. 假定 x=5,y=6,就表达式x+*+y 的值为 _; 3. 假定 x 是一个规律量,就 x & true 的值为 _;4. 含随机函数的表达式 rand
28、%20 的值在 _至 _区间内; 5. 如需要把一个字符串” aaa” 赋值到字符数组 a 中,就需要执行 _字符串函数的调用来实现; 6. 程序的编译是以_为单位进行的;_元素的指针,并且在任何时候都 7. 一个数组的数组名实际上是指向该数组的不答应 _它;8. 指针变量pv 和 pc 定义为“void *pv =”Hello, word.” ; char *pc;” ,要将pv 值赋给 pc,就正确的赋值语句是_; 9. C+ 支持两种多态性:_时的多态性和 _时的多态性;10在一个用数组实现的队列类中,除了储存队列元素的叔祖成员外,仍包含有两个数据 成员,一个指明队首元素位置,另一个指明
29、队列 _; 11一个类的 _函数通常用于实现释放该类对象中指针成员所指向的动态存 储空间的任务; 12. 假 定 用 户 为 类AB定 义 了 一 个 构 造 函 数 “ABint aa, char *bb=NULL:aaa,bbb” ,就该类中至少包含有_个数据成员; 13. 重载插入运算符时,其运算符函数的返回值类型应当是_;三、程序填充,对程序、函数或类中划有横线的位置,依据题意按标号把合适的内容填写到程序下面相应标号的后面(每道题6 分,共 18 分) ; 1. 打印出 2 至 99 之间的全部素数 即不能被任何数整除的数 #include #include 13 / 21 名师归纳总
30、结 - - - - - - -第 13 页,共 21 页精选学习资料 - - - - - - - - - void main int i,n forn=2;求出 n 的平方根并取整; _1_ ; n+ int temp=intsqrtn; / fori=2; _2_ ; i+ ; ifn%i=0 _3_ ifitemp coutn ; coutn; 123 2. 下面是对按从小到大排列的有序数组an 中进行二分查找x 的算法,如查找胜利返回该元素下标,否就返回-1 ; int BinarySearchint a,int n,int x int low=0, high=n-1; / 定义并初始化
31、区间下界和上界变量 int mid; / 定义储存中点元素下标的变量 whilelow=high mid=_1_; ifx=amid _2_ else ifxamid high=mid-1 else _3_; return -1; 123 3class A int a,b;public: Aint aa=0, int bb=0 _1_ /分别用 aa 和 bb 对应初始化a 和 b ;main _2_ ; /定义类 A 的对象 x 并用 5 初始化,同时定义y 并用 x 初始化_3_ ; /定义 p 指针,使之指向对象x 1 2 3 14 / 21 名师归纳总结 - - - - - - -第
32、14 页,共 21 页精选学习资料 - - - - - - - - - 四、写出程序运行结果(每道题 6 分,共 18 分)1. #include const int N=5;void main int i,p=1,s=0;fori=1;iN; i+ p=p*i ;s=s+p;coutsetw5isetw5p;coutsetw5sendl; 2. #include void main char s35=1234,abcd,+-*/;char *p3;forint i=0;i=0 ;i- coutpi coutendl ; 3. #include class Date public: void SetDateint y,int m,int d Year=y; Month=m; Day=d ;