试卷代号:1008 座位号■■ 中央广播电视大学2011一2012学年度第一学期“开放本科”期末考试 面向对象程序设计试题 2012年1月 题 号 三 四 五 总 分 分数 得 分 评卷人 一、单项选择题(每小题2分,共20分) 1.C十十程序的基本功能模块为( )。 A.表达式 B.标识符 C.语句 D.函数 2.当处理特定问题的循环次数已知时,通常采用()来解决。 A.for循环 B.while循环 C.do循环 D.switch语句 3.已知x的值为4,下面表达式的值等于5的是()。 A.x++ B.x C.++x D.x-- 4.假定变量m定义为“intm=7;”,则定义变量p的正确语句为( A.int p=&mr B.int *p=&m; C.int&p=¥m; D.int p=m; 5.下标变量a[k]所对应的指针访问表达式为()。 A.*(a+k) B.a[0]+k C.*(a[0]+k) D.*a十k 6.假定AA为-个类,a为该类私有的数据成员,Get Value()为该类公有函数成员,它返 回a的值,x为该类的一个对象,则访问x对象中数据成员a的合法格式为()。 A.x.a B.x.a() C.x->GetValue() D.x.Get Value() 59
试卷代号 0 0 座位号仁口 中央广播电视大学 11 2学年度第一学期"开放本科"期末考试 面向对象程序设计试题 2012 年1 |题号|一|二|三|四!五 |分数 I I I I I I 得分|评卷人 一、单项选择题{每小题 1. 基本 )。 A. 表达式B.标识符 c.语句 .函数 2. 处理特定 次数 知时 采用 )来解决。 A. for 循环 while C. do 环D.switch 3. 为4 下面 于5 )。 A. 十 十 C. B. x D. 4. 量m 义为 m=7;" 义变量p 句为 )。 A. int p=&m; C. int &p= 铃m; B. int 祷 p & m D. int 赞 p = m 5. 变量 )。 A. B. a[O]+k c.祷 a [ D. 6. 假定 A A 为一 类私 该类 合法格 )。 A. x.a c. 一)GetValueO B. x. aO D. x. GetValueO 59
7.类的构造函数是在定义该类的一个( )时被自动调用执行的。 A.成员函数 B.数据成员 C.对象 D.友元函数 8.假定AB为一个类,则执行“ABx;”语句时将自动调用该类的( )。 A.带参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值重载函数 9.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该 类定义的无参构造函数为( )。 A.AB(){a=0:} B.AB(int aa=0):a(aa){} C.AB(int aa):a(aa)() D.AB(){} 10.如果表达式a十+中的“++”是作为普通函数重载的运算符,若采用运算符函数调用 格式,则可表示为( )。 A.a.operator+() B.operator十+(a) C.operator++(a,1) D.operator++(1,a) 得 分 评卷人 二、填空题(每小题2分,共20分) 1.存储字符串“a”需要占用个字节。 2.重载一个函数的条件是:该函数必须在参数的 或参数对应的类型上 与其它同名函数不相同。 3.假定p是一个指向整数对象的指针,则用 表示该整数对象。 4.元素a[门的指针访问方式为 5.已知有定义“inta[3]={8,7,9}:”,则*a十5的值为 6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度 为length,则队列为满的条件是 7.对类中对象和基类成员的初始化只能通过在构造函数中给出的 来实 现。 8.假定AB为一个类,则执行“ABa,b(2),c[3],*p=&a;”语句时共调用该类无参构 造函数的次数为次。 9.假定派生类及其基类中都定义有同名函数成员,若要在派生类中调用基类的同名函数 成员时,就需要在其函数名前加上 和类区分符。 10.派生类的成员函数能够直接访问所含基类的 成员和保护成员。 60
7. 在定义该类 )时被自动调用执行的。 A. 数B. c. 友元 8. 定AB 行"AB x;" 调用该 )。 A. c. 构造 重载 9. 定一 有一 整型 员a 不定义任 构造 类定义的元参构造函数为( )。 A. ABO {a=O;} B. AB(int aa=O): a(aa) {} c. AB(int aa): a(aa) {} D. ABO {} 10. 果表达 十 十 重载 采用运算符 格式,则可表示为( )。 A. a. operator 十+0 C. operator+ 十(a 1) 得分|评卷人 B. operator 十(a) D. operator 十 门 二、填空题{每小题 1.存储字符串 "需要占用个字节。 2. 重载 件是 与其它同名函数不相同。 3. 对象 指针 则 用 表示 数对 1. 素a[iJ 指针 方式 5. 知 有 义"int a[3J= ,7 ,9} 美a+5 6. 在一 队列 数组长度 为MS 为first n g h,则队列为满的条件是 7. 对类 员 的初 始 过在 现。 8. 定AB 一个类 行"AB a , b(2) , c[3J 祷p=&a;" 调 用 无参 造函数的次数为一一次。 9. 定派生类及其基 都定义有 要在 成员时,就需要在其函数名前加上和类区分符。 10. 含基 60
得分 评卷人 三、程序填充题(根据题意在横线上填写合适的内容。每小题6分, 共24分) 1.在输出屏幕上打印出一个由字符’’组成的等腰三角形,该三角形的高为5行,从上 到下每行的字符数依次为1,3,5,7,9。 include(iostream.h) void main() { int i,j; for(i=1; i++){ for(j=1;j<=9:j++) ifj<=5-i11j>=5+i)cout<<’'; else cout<<endl; 2.从字符串参数a中删除所有与参数c的值相同的字符。 void delstr(char a[],char c) { int i=0; while(a[i]){ if(a [i]==c){ for(int j=i+1;aj];j++) aC-1]=\0'; else 61
|得分|评卷人| I I I 三、程序填充题{根据题意在横线上填写合适的内害。每小题 2 4 1.在输出屏幕上打印出一个由字符'祷'组成的等腰三角形,该三角形的高为 5行,从上 到下每行的字符数依次为 1, 3, 5, 7, ** include<iostream. h) void mainO int i,j; for(i=l; ;i++) { for (j=l ;j<=9;j++) if (j<=5一i II j>=5+i) cout«' '; else cout«endl; 2. 删除 参数 字符 void delstr(char char c) int i=O; while(a[i]) { if(a [i]==c) { for (int j=i十1; a[j]; j+ +) a[j-1]= ,\ 0 ' ; else 61
3.下面是类ARRAY的定义。 class ARRAY( int *v; //指向存放数组数据的空间 int s; /数组大小 public: (int a[],int n); /构造函数的声明 {delete[]v;》 /析构函数的定义 int size(){return s;} int&operator[](int n); }; 4.下面给出类A和使用它的主函数 class A int a,b; public: A(int aa=0,int bb=0)(a=aa;b=bb;} }; void main(){ A pl,p2; p1= /调用无参构造函数生成由p1指向的动态对象 p2= //调用带参构造函数生成由p2指向的动态对象, /使a和b成员分别被初始化为4和5 } 62
3. 面是类ARRAY 定义 class ARRAY{ lOt * V; lOt s; public: II II (jnt int n) ; {delete ;} int sizeO {return s;} int&' operator (jnt n); 4. 下面给 类A class A { int a ,b; public: A (jnt aa=O , jnt bb=O) {a=aa; b=bb;} II II析构 62 void main () { 铸pI 铃p2; pl= pZ= II调用 参构 动态 II 带参构造 动态对象 II 初始
得分 评卷人 四、理解问答题(分别写出前2小题的程序运行结果和后2小题的函 数功能。每小题6分,共24分) 1.#include(iostream.h> const int B=2; void main() { int p=1,s=1; while(s<20)( p*=B; s十=pi } cout<<"s="<<<<endl; } 运行结果: 2.#include(iostream.h) class CE{ private: int a,b,c; int getmin()(return (a<b?a:b);) public: void SetValue(int xl,int x2,int x3){ a=x1;b=x2;c=x3: int GetMin()(int d=getmin();return (d(c?d:c);) }; void main() { intx=5,y=12,z=8; CE ep=new CE; ep-)Set Value(x,y,z); cout((ep->GetMin()((endl; 运行结果: 63
|得分|评卷人| I I I 四、理解问答题{分别写出前 2小题的程序运行结果和后 J、题的画 数功能。每小题 1. :j:j: include<iostream. h) const int B=2; void mainO int p=l ,s=l; while(s<20) { s+=p; cout<<"s= "<<s<<endl; 运行结果 2. :j:j: include< iostream. h) class CE { pnvate: int a , b ,c; int getminO {return (a< b? a: b) ;} public: void SetValue(int xl ,int x2 , int x3) { a=xl; b=x2; c=x3; int GetMinO {int d=getminO; return (d<c'! d: c) ; } void mainO int x=5 ,y=12 ,z=8; CE 祷ep=new CE; ep 一)SetValue(x,y ,z) ; cout«ep 一)GetMinO <<endl; 运行结果 63