试卷代号:1008 座位■☐ 中央广播电视大学2007一2008学年度第二学期“开放本科”期末考试 面向对象程序设计 试题 2008年7月 题 号 三 四 五 总分 分 数 得分 评卷人 一、单项选择题(每小题2分,共20分) 得分1.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为( )。 A.1 B.0 C.与x值相同 D.与x值相反 得分 2.若定义了函数double*function(),则函数function的返回值为( A.实数型 B.实数指针型 C.指向函数的指针型 D.引用型 得分 3. 若用数组名作为函数调用的实参,传递给形参的是数组的( )。 A.首地址 B.第一个元素的值 C.全部元素值 D.元素的个数 得分列 4.预处理命令在程序中都是以( )符号开头的。 A.¥ B.# C.& D.@ 得分州 5. 假定p指向的字符串为“string'”,若要输出这个字符串的地址值,则使用() A.cout<p; B.cout<<p; C.cout<<&p; D.cout<<(void *)p; 得分 6. 假定变量b和pb定义为“intb[10],*pb=b;”,要将24赋值给b[1]元素中,不 正确的赋值语句是( )。 A.*(pb+1)=24; B.0(b+1)=24: C.¥++b=24; D.+十pb=24: 56
试卷代号:1008 座位号〔工 」 中央广播电视大学2007-2008学年度第二学期“开放本科”期末考试 面向对象程序设计 试题 2008年 7月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题 2分.共 20分) 匝互二]1·设x是一个“ool型的逻辑量,y的值为 10,则表达式x&&y的值为( ) B. 0 D.与 x值相反 0州 卜 A. 1 C.与 x值相同 若定义T函数 double A.实数型 C.指 向函数的指针型 function(),则函数f unction的返回值为( B.实数指针型 D.引用型 k}州 卜 畴州 卜 若用数组名作为函数调用的实参,传递给形参的是数组的( A.首地址 B.第一个元素的值 C.全部元素值 D.元素的个数 预处理命令在程序 中都是以( )符号 开头的。 泌行 @ B. D. A. 关 C. & '〔〕 5.假定p指向的字符串为, " string " ,若要榆出这个字符串的地址值,则使用( A. cout<< *p; B. cout< p; C. cout< 乙P; D. cout< (void二 匣二」6.假定变量b和pb定义为“int b[10],,pb=b; " ,要将24 正确 的赋值语句是 ( )。 )P; 赋值给 b[1〕元素中,不 A. ,(pb+ 1)=24; C. 十 +b=24; B. ,( b-}-1)“24; D. *++pb=24;
得分 7. 在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于 ( )中。 A.主文件 B.实现文件 C.库文件 D.头文件 得分 8.假定AB为一个类,则( )为该类的拷贝构造函数的原型说明。 A.AB(AB x); B.AB(AB&.x); C.void AB(AB&x); D.AB(int x); 得分 9.设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该 类的( )。 A.无参构造函数 B.带参构造函效 C.析构函数 D.转贝构造函数 得分 10.假定AB为一个类,Px为指向该类的一个含有n个对象的动态数组的指针,则 执行“delete[门px;”语句时共调用该类析构西的数为)。 A.0 出.1 (n 1).十1 得分 评卷人 二、填空题(每小题2分,共20分】 得分 在C十十程序中包含一个头文件或程序文件的预处理命令的标识符为 得分 2 C十+常数0x45对应的十进制值为 0 得分 3.元素类型为int的数组a[10]共占用 字节的存储空间。 得分 4.在C十+语言中,一个函数由函数头和 这两个部分组成。 得分 5. 一个指针类型的对象占用内存的 个字节的存储空间。 得分 6.假定一个二维数组为c[5][8],则c[3]的值为二维元素 的地 址。 得分 与结构成员访问表达式(*p).score等价的表达式是 得分 8. 对于类中定义的任何成员,其隐含访问权限为 得分 9. 假定AA是一个类,“AA abc();”是该类中一个成员函数的原型,则在类外定 义时的函数头为 得分 10.假定AB为一个类,则执行“ABa[20];”语句时,系统自动调用该类无参构造函 数的次数为 57
降州 卜 0州 卜 0州 卜 腾州 卜。 在多文件结构的程序 中,通 常把类 中所有非 内联函数 的定义单独存放于 ( )中。 A.主文件 B.实现文件 C.库文件 D.头文件 假定 AB为一个类,则( )为该类的拷贝构造函数的原型说明。 A. AB(AB x); B. AB(AB& x); C. void AB(AB& x); D. AB(int x); 设 px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该 类的( )。 A.无参构造函数 B.带参构造函数 C.析构函数 D.打 贝构造函数 假定 AB为一个类,px为指向该类的一个含有 n个对象的动态数组的指针,则 执行“delete []px;"语句时共调用该类析构币了_灼娇’致 为、 )。 A O 批.1 1_ n 里). 一 t 得 分 评卷人 二、填空题 (每小题 2分.共 20分) 1. 2. 在 C +程序 中包含一个头文件或程序文件 的预处理命令 的标识符 为 C++常数 0x45对应的十进制值为 3.元素类型为int的数组a[10」共占用_ 字节的存储空间。 4.在 C十十语言中,一个函数由函数头和 这两个部分组成 。 5.一个指针类型的对象占用内存的 个字节的存储空间。 6.假定一个二维数组为 c[5][8],则 c[3」的值为二维元素 的地 址 。 7.与结构成员访问表达式(* p). score等价的表达式是‘ __ 8.对于类中定义的任何成员,其隐含访问权限为 9.假定 AA是一个类,"AA * abc() ;”是该类中一个成员函数的原型,则在类外定 义时的函数头为 10.假定 A13为 一个类,则执行“AB a巨20];”语句时,系统自动调用该类无参构造函 数的次数为 57 哑 画画画画画 画画画 画
得分 评卷人 三、程序填充题,根据题意在横线上填写合适的内容(每小题6分,共 24分) 得分 11.在输出屏幕上打印出一个由字符‘’组成的等腰三角形,该三角形的高为5行, 从上到下每行的字符数依次为1,3,5,7,9。 #include void main() int i,j; for(i=1; ;i++){ for(G=1;j=5+i)cout<<; else cout<<endl; 得分 12.从字符串参数a中删除所有与参数c的值相同的字符。 void delstr (char a,char c) int i=0; while (a[i])( if (a[i]==c)( for (int j=i+1;a[j];j++) a0-1]=10'; } else 58
得 分 评卷人 三、程序填充题,根据题意在横线上填写合适的内容(每小题 ‘分、共 24分 l 画 二」11·在输出屏幕上打印出一个由字符‘ ,,组成的等腰三角形,该三角形的高为71行, 从上到下每行的字符数依次为 1,3,5,7,9 #include void main() int i,l; for(i二1 for(j=1;j =5+i) cout< 匣三口12·从字符串参数a中删除所有与参数c的值相同的字符。 void delstr (char a[],char。) int i= 0 while (a[i]){ if (a[i]“= c){ for (int j二i+1;a[j];j++) a仁j一1〕二‘\0 '; else 58
得分☐13.已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重 载的运算符[]要对下标是否越界进行检查。 class ARRAY{ int v; /指向存放数组数据的空间 int s; /数组大小 public: ARRAY (int a[],int n); ARRAY ()(delete []v;} int size()(return s;) int&.operator[](int n); }; int& operator[](int n) /[的算符成员函数定义 { if(n=s){cerr<<"下标越界!";exit(1);} return } 得分14.下面是…个带类的程序。 class A( int a,b; public; A(int aa=0,int bb=0)(a=aa;b=bb;) }; void main(){ A pl,*p2; pl= //调用无参构造函数生成由p1指向的动态对象 p2= /调用带参构造函数生成由p2指向的动态对象 /使a和b成员分别被初始化为4和5 59
!画二口13·已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重 载的运算符「〕要对下标是否越界进行检查。 class ARRAY{ int 关 v in t s //指向存放数组数据的空间 /数组大小 public; ARRAY lint a[],int n); ~ARRAY()(delete []v; int size() (return s;} int乙operator[] lint n) int & operator[](int n) //仁」的返算符成 员函数定义 if (n=s) (cerr< "下标越界!";exit (1); return ; } 匾亚] 14·下面是一个带类的程序。 class A( inta, b; public; M int aa= 0,int bb=0)(a=aa; b=bb; void main(){ A* pl,* p2; p1= p2“_ 刀调用无参构造函数生成由 PI指向的动态对象 //调用带参构造函数生成由 p2指向的动态对象 刀使 a和 b成员分别被初始化为 4和 5
得分 评卷人 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题 的程序或函数功能(每小题6分,共24分) 得分 15.include<iomanip.h const int M=20; void main() { int c2,c3; c2=c3=0; for (int i=1;i<=M;i++) if(i%2==0)c2++ f(i%3==0)c3++: } cout<<c2<<<<c3<<endl; } 运行结果: 得分 16.include<iostream.h class A{ int a,b; public: A(){a=b=0;} A(int aa,int bb)(a=aa;b=bb;) int Sum (){return a+b;) }; void main () Ax(12,46); cout<<x.Sum()<<endl; 运行结果: 得分 17.void fun5(char a,const char b) while(*b)*a+十=*b+十; *a=0; } 函数功能: 60
得 分 评卷人 四、理解问答题 ,分别写出前 2小题的程序运行结果和指出后 2小题 的程序或函数功能(每小题 6分,共 24分) 0州 !15.#include const int M=20; void main() { intc2,c3; c2=c3=0; for (int i=1;i class A{ int a,b; public: A(){a=b二0;} M int as,int bb) {a=aa; b=bb int Sum (){return a+ b;} }; 0州 }17. void main(){ Ax(12,46); cout< x. SumU+ endl; 圣 运行结果 : void f un5 (char,a, const char*b) while(,b) * a十+ 二 *b十 + *a= 0; } 函数 功能 : 60
得分 18.bool fun8(int a],int n,int key) { for (int i=0;ims){cout<<"Error!"<<endl;exit(1);} MS=ms;n=nn;a=new int[MS]; for (int i=0;i<MS;i++)a[i]=aa[i]; } int Max(); /从数组a的前n个元素中求出最大值并返回 }; 61
匝三二}18. bool fun8(int a[],int n, int key) { for lint i=0;ims){cout< "Error ! "< endl;exit(l);} MS=ms; n=nn; a=new int仁MS]; for lint i=0;i<MS; i++)a[i]=aa[i]; } int MaxU ; 刀从数组 a的前 n个元素中求出最大值并返回 }; 61
试卷代号:1008 中央广播电视大学2007一2008学年度第二学期“开放本科”期末考试 面向对象程序设计试题答案及评分标准 (供参考) 2008年7月 一、单项选择题(每小题2分,共20分) 1.C 2.B 3.A 4.B 5.D 6.C 7.B 8.B 9.C 10.C 二、填空题(每小题2分,共20分)】 1.#include 2.69 3.40 4.函数体 5.4 6.c[3][0] 7.p->score 8.private(或私有) 9.AA*AA::abc() 10.20 三、程序填充题,根据题意在横线上填写合适的内容(每小题6分,共24分】 评分标准:每空3分。 11.i<=5 cout<<'米' 12.a0j-1]=aCj] i++ 13.ARRAY: v[n](或(v+n) 14.new A new A(4,5) 62
试卷代号:1008 中央广播电视大学2007-2008学年度第二学期“开放本科”期末考试 面向对象程序设计 试题答案及评分标准 (供参考) 2008年 7月 一、单项选择题(每小题 2分,共 20分) 1.C 2.B 3.A 4.B 5.D 6. C 7. B 8. B 9. C 10. C 二、填空题(每小题 2分 ,共 20分) 1.#include 2. 69 3. 40 4.函数体 5. 4 6. c[3][0] 7. p一>score 8. private(或私有) 9. AA * AA::abc<) 10. 20 三、程序填充题,根据题意在横线上填写合适的内容(每小题 6分 ,共 24分) 评分标准:每空 3分。 11.i<=5 cout+ ' *‘ 12. a仁l一1]=a仁j] i+-+ 13. ARRAY:: v仁n](或 ‘(v+n)) 14.new A new A(4,5) 62
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能(每小 题6分,共24分) 评分标惟:第3、4小题根据叙述完整程度酌情给分。 15.106 16.58 17.把b所指的字符串拷贝到a所指的字符数组空间中。 l8.从一维数组a[n]中查找值为key的元素,若查找成功则返回真否则返回假。 五、编程题(每小题6分,共12分) 19.int f(int a],int n) if(n==0)return 0; /11分 else return a[n-1]+f(a,n-1); /6分 } 注:if语句可改写为if(n==l)return a[0]; 20.int AA:Max() /1分 int x=a[0]; /2分 for (int i=1;i<n;i++) if (ai]x)x=a[i] /15分 return x; /16分 63
四、理解问答题。分别写出前 2小题的程序运行结果和指出后 2小题的程序或函数功能(每小 题 6分,共 24分) 评分标准:第 3,4小题根据叙述完整程度酌情给分。 15. 10 6 16. 58 17.把 b所指的字符串拷贝到 a所指的字符数组空间中。 18.从一维数组 a[司中查找值为key的元素,若查找成功则返回真否则返回假。 五、编程题(每小题 6分,共 12分) 19. int f(int a[],int n) { if(n==0) return 0; else return a[n一1]+ f(a, n一1); 刀1分 刀6分 注:if语句可改写为 if (n==1) return a[0]; 20. int AA :Max() 刀1分 int x=a[0]; 刀2分 for (int i=1;ix) x=a[i] return x; 刀5分 刀6分