试卷代号: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=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=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(sGetMin()((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
3.int ff(int x,int y,char op)( int z; switch(op){ case’+’: cout((x('+’(y('=’;cin)z; if(x+y==z)return 1;else return 0; break; case’-’: cout(x((’-’((y(’=’;cin)z; if(x-y==z)return 1;else return 0; break; default:cout(("运算符错,退出!";exit(I); } } 函数功能: 4.char¥f(char*s)( int n=strlen(s); char r=new char[n+1]; for(int i=0;i=’a'&&s[i门<=’z')r[i]=si门-’a'+’A'; else r[i]=s[i]; r[n]=八\0'; return r; } 函数功能: 得 分 评卷人 五、编程题(每小题6分,共12分】 1.根据下面函数声明,编写一个函数,求出由指针a所指向的字符串中包含的十进制数 字字符的个数,该个数由函数返回。 int fun(char a); 2.根据下面函数声明编写出函数定义,该函数的功能是比较两个数组a[n]和b[n]是否 相等,若每个元素的值都对应相等则返回1,否则返回0。 int CompareBig(int a],int b[],int n); 64
3. int £f(int x , int y , char op) { mt z; switch(op) { case'+', cout( (x« ,+'«y« '=勺 H(x十y= = z) return 1; else return 0; break; case ,-- - , -: cout( (x( ( ,一 cin»z; i£Cx-y==z) return 1; else return 0; break; default: cout( ("运算符错,退出!"; exit(l) ; 函数功能= 4. char 善 fCchar 势s) { int n=strlen(s); char 祷r=new char[n+1]; for (int i=O; i= && s[i]<= r[i] = sCi] 一'a'+'A'; else rei] = s[i]; r[n]= ,\ 0' 5 return r; dd1 五、编程题{每小题 6分,共 2分) 1.根据下面函数声明,编写一个函数,求出由指针 a所指向的字符串中包含的十进制数 字字符的个数,该个数由函数返回。 int fun(char 铸a) ; 2. 据下面 编写 数定义 功 能 组a[n] 和ben] 相等,若每个元素的值都对应相等则返回 1,否则返回 0。 n n ; -1n&···a n ·1 n-tcompAar B gb 64
试卷代号:1008 中央广播电视大学2011一2012学年度第一学期“开放本科”期末考试 面向对象程序设计试题答案及评分标准 (供参考) 2012年1月 一、单项选择题(每小题2分,共20分) 1.D 2.A 3.C 4.B 5.A 6.D 7.C 8.B 9.D 10.c 二、填空题(每小题2分,共20分)】 1.2 2.个数(或数目) 3.*p 4.*(a十i) 5.13 6.length==MS 7.初始化表(初值表) 8.4 9.基类名 10.公有(或公用)》 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,共24分) 评分标准:每空3分 1.i(=5、cout((’¥) 2.a[j-1]=a0j]、i++ 3.ARRAY、~ARRAY() 4.newA、newA(4,5) 65
试卷代号 0 0 中央广播电视大学 11 2学年度第-学期"开放本科"期末考试 面向对象程序设计试题答案及评分标准 (供参考) 2012 年1 一、单项选择题{每小题 2分,共 0分) 1. D 2. A 3. C 6. D 7. C 8. B 二、填空题{每小题 2分,共 0分) 1. 2 2. 4. B 9. D 5. A 10. C 3. 4. 5. 13 6. length= =MS 7. 始化表 8. 4 9. 基类 10. 三、程序填充题,根据题意在横线上填写合适的内容。{每小题 6分,共 4分) 评分标准:每空 3分 1. i(=5 « ' 2. a[j =a[j + + 3. ARRAY 、-ARRAYO 4. new 、new A(4 ,5) 65
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的函数功能。(每小题6 分,共24分)】 评分标准:第3、4小题根据叙述完整程度酌情给分。 1.8=31 2.5 3.以参数x和y作为运算对象,以参数op所存+或一字符作为运算符,要求从键盘上输 人运算结果,若运算正确则返回1否则返回0。 4.根据参数s所指向的字符串,生成一个由r所指向的新字符串并返回,该新字符串使s 字符串中的小写字母均变为大写。 五、编程题(每小题6分,共12分)】 评分标准:按编程完整程度的情给分。 1.int fun(char a) int i=0; /1分 while(a){ if(*a》=’0’&&.*a(=’9’)i+十: a十十; return i; /16分 } 2.int CompareBig(int a],int b[],int n) { int i; /11分 for(i=0;i(n;i++) if(ali]!=bCi])break; /14分 if(i==n return 1;else return 0; /16分 66
四、理解问答题,分别写出前 2小题的程序运行结果和指出后 2小题的函数功能。{每小题 分,共 4分} 评分标准 3、 4小题根据叙述完整程度酌情给分。 1. 5=31 2. 5 3. 为运算对 op 字符 为运算 要求从键盘上输 入运算结果,若运算正确则返回 l否则返回 4. 据参数 所指 生成一 新字符 字符串中的小写字母均变为大写。 五、编程题{每小题 6分,共 2分} 评分标准 z按编程完整程度酌情给分。 1. int fun(char 铸a) int i=O; //1 while( 祷a) { f( 赞a)='O' &&铸 i++; a+ return 1; //5 //6 , n n ., -D .. n rL ·1 n+·‘a ·1 ob B-- nL --n compavae mt 1; //1 for(i=O; i(n; if(aCiJ! =b[iJ) break; //4 if(i= = n ) return 1; else return 0; //6 66