试卷代号:1008 座位■■ 中央广播电视大学2009一2010学年度第一学期“开放本科”期末考试 面向对象程序设计 试题 2010年1月 题 号 三 四 五 总 分 分数 得分 评卷人 一、单项选择题(每小题2分,共20分)】 1.用来构成C十十程序文件的基本单位是( )。 A.字符 B.语句 C.函数 D.表达式 2.在下列的符号常量定义中,错误的定义是( )。 A.const double DD=3.14; B.const int M=20; C.const char ch; D.const bool mark=true; 3.下面给字符数组赋初值时,正确的语句是()。 A.char s1]="abcdef"; B.char s204]="abcd"; C.char s3[23]={"abe","xyz"); D.char s4[4][]={'a','x',’s',t}: 4.假定一条定义语句为“inta[10],x,pa=a:”,若要把数组a中下标为3的元素值赋 给x,则不正确的语句为( )。 A.x=pa[3]: B.x=¥(a十3); C.x=a[3]; D.x=pa十3; 58
试卷代号:1008 座位号口口 中央广播电视大学2009-2010学年度第一学期“开放本科”期末考试 面向对象程序设计 试题 2010年 1月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题 2分,共 20分) 1.用来构成 C十十程序文件的基本单位是( )。 A.字符 B.语句 C.函数 D.表达式 2.在下列的符号常量定义中,错误的定义是( )。 A. const double DD=3. 14; B. const int M=20; C. const char ch; D. const bool mark=true; 3.下面给字符数组赋初值时,正确的语句是( )。 A. char sl仁〕="abcdef"; B. char s2[4]="abcd"; C. char s3[2][3]={"abc",”xyz}; D. char s4[4][]={'a',’x','s','t’}; 4.假定一条定义语句为‘`int a[.1叼,x, * pa=a;",若要把数组 a中下标为 3的元素值赋 给 x,则不正确的语句为( )。 A. x= pa仁3]; B. x= * (a+3); C. x=a仁3]; D. x= * pa+3; 58
5.在一个完整类的定义中,应包含有( )成员的定义。 A.数据 B.函数 C.数据和函数 D.数据或函数 6.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中 函数成员a()的格式为()。 A.x.a B.x.a() C.x->a D.x-)a() 7.假定AA是一个类,abc()是该类的一个成员函数,则参数表中隐含的第一个参数的标 识符为( )。 A.abc B.int C.this D.bool 8.对于一个类的构造函数,其函数名与类名( )。 A.完全相同 B.基本相同 C.不相同 D.无关系 9.假定AB为一个类,则执行“AB*s=new AB(a,5);”语句时得到的一个动态对象为。 A.s B.s-)a C.s.a D.*s 10.若派生类公有继承基类,则基类的公有和保护成员在派生类中将( ·)成员。 A.全部变成公有 B.全部变成保护 C.全部变成私有 D.仍然相应保持为公有和保护 得 分 评卷人 二、填空题(每小题2分,共20分) 1.C+十语言是在 语言的基础上发展起来的。 2.假定x=5,y=6,则执行表达式y*=x十+后,y的值为· 3.在f语句中,每个else关键字与它前面同层次并且最接近的 关键字相配套。 59
5.在一个完整类的定义中,应包含有( )成员的定义。 A.数据 B.函数 C.数据和函数 D.数据或函数 6.假定 AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中 函数成员 a()的格式为( )。 A. x. a B. x. a ( ) C. x- )a D. x-)a() 7.假定 AA是一个类,abc()是该类的一个成员函数,则参数表中隐含的第一个参数的标 识符为( )。 A. abc B. int C. this D. bool 8.对于一个类的构造函数,其函数名与类名( )。 A.完全相同 B.基本相同 C.不相同 D.无关系 9.假定 AB为一个类,则执行“AB * s= new AB(a,5);”语句时得到的一个动态对象为。 A. s B. s一 )a C. s. a D. * s 10,若派生类公有继承基类,则基类的公有和保护成员在派生类中将( )成员。 A.全部变成公有 B.全部变成保护 C.全部变成私有 D.仍然相应保持为公有和保护 得 分 评卷人 二、填空题(每小题 2分,共 20分) 1. C十十语言是在_ 语言的基础上发展起来的。 2.假定 x=5,y=6,则执行表达式 y*=x+十后,y的值为_ 。 3.在 if语句中,每个 else关键字与它前面同层次并且最接近的_ 关键字相配套。 59
4.一维字符数组a[20]能够存储的字符串的长度至多为 5.假定p所指对象的值为25,p十1所指对象的值为42,则执行p++运算后,p所指对 象的值为 6.若采用p-)abc(y)表达式调用一个成员函数,在成员函数中使用的 就代 表了类外的p指针。 7.一个类中定义的数据成员或函数成员,可以使用种保护属性中的一种。 8.假定用户只为类AB定义了一个构造函数"AB(int aa,.int bb=0){a=aa;b=bb;}", 则定义该类的对象时,其初始化实参表中至少带有个实参。 9.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的 10.重载一个运算符时,该运算符的优先级、 以及运算对象的个数都不允许 改变。 得 分 评卷人 三、程序填充题(根据题意在横线上填写合适的内容。每小题6分, 共24分) 1.对数组a中的元素按相反次序重新排列。 void PV(int a],int n) int i; for(i=0;i<n/2; int x=a]; a[i]= a[n-i-1]=x; 60
4.一维字符数组a[20〕能够存储的字符串的长度至多为_ 。 5。假定 p所指对象的值为 25,p十1所指对象的值为 42,则执行 ,p十+运算后,p所指对 象的值为 6.若采用p-)abc(y)表达式调用一个成员函数,在成员函数中使用的_ 就代 表了类外的 p指针。 7一 个类中定义的数据成员或函数成员,可以使用_ 种保护属性中的一种。 8.假定用户只为类AB定义T一个构造函数”AB(int aa, int bb=0) (a=aa; b=bb;} ', 则定义该类的对象时,其初始化实参表中至少带有_ 个实参。 9.在重载一个单 目运算符时,参数表 中没有参数,说明该运算符 函数只能是类 的 10.重载一个运算符时,该运算符的优先级、 以及运算对象的个数都不允许 改变。 得 分 评卷人 三、程序填充题(根据题意在横线上填写合适的内容。每小题 6分, 共 24分 ) 1.对数组 a中的元素按相反次序重新排列。 void M int a[],一int n) for(i=0;i<n/2; )麦 int x=a仁i]; a[i]= a[n-i一1]=x;
2.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输 出结果为“2223”,输人50时得到的输出结果为“255”,输入37时得到的输出结果为“37”。 #include(iostream.h》 void main() int x; cout>x;while( ); int i=2; do while(x%i==0)(cout<<<';x/=i; while(i<x); if(x!=1)cout<<x; cout<<endl; 3.假定有定义为“struct NODE{int data;NODE next;};”,下面算法遍历输出以参数 L为表头指针的单链表中每个结点的值。 void f6(NODE L) { if( return; NODE p=L; while(p){ cout<<p-)data< D= } cout((endl; 61
2.把从键盘上输人的一个大于等于 3的整数分解为质因子的乘积。如输人 24时得到的输 出结果为“2223",输人 50时得到的输出结果为“255",输人 37时得到的输出结果为,"370 #include (iostream. h) void main() int x; coutdata< ”; p= cout(<endl
4.类A的定义 class A{ char a; public: A(){a=0;}》 A(char aa){ //定义带参构造函数 a= char[strlen(aa)+1]; //进行动态存储分配 strcpy(a,aa); //用aa所指字符串初始化a所指向的动态存储空间 } (delete []a;} /定义析构函数 }: 得分 评卷人 四、理解问答题(分别写出前2小题的程序运行结果和后2小题的函 数功能。每小题6分,共24分) 1.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++; if(i%3==0)c3十+; } cout<<c2<<<<3<<endl 运行结果: 62
4.类 A 的定义 class A { char * a public: AO) {a=0;} A(char,aa){ a一 strcpy(a,aa) 刀定义带参构造函数 char[strlen(aa) + 1] ; //进行动态存储分配 //用 as所指字符 串初始化 a所指向的动态存储空间 {delete []a 刀定义析构函数 得 分 评卷人 四、理解问答题 (分别写出前 2小题 的程序运行结果和后 2小题的函 数功能。每小题 6分 ,共 24分 ) 1.#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十+; if(i%3==0) c3十+ cout+ c2+ ”< c3< endl 运行结果:
2.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; } 运行结果: 3.void fun5(char a,const char b) while(*b)*a+十=¥b十+; *a=0’; } 函数功能: 4.bool fun8(int a[],int n,int key) for(int i=0;i<n;i++) if(a[i]==key)return true; return false } 函数功能: 63
2.#include (iostream. h) class A{ int a, b; public: A() (a=b=0;} M int aa, int bb) {a=aa; b=bb; int Sum(){return a+ b;} void main() A x(12,46); cout< x. Sum()+ endl; 运行结果 : 3. void fun5(char * a, const char* b) while(* b) * a十 十= * b+ + ,a='\0’; 函数功能: 4. bool fun8(int a[],int n, int key) for(int i=0;i<n; i++) if (a[i]==key) return true; return false; 函数功能: 63
得分 评卷人 五、编程题(每小题6分,共12分)】 1.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。 int f(int a[],int n); 2.根据下面类中拷贝构造函数的原型写出它的类外定义。 class Array int a; /指向动态分配的整型数组空间 int n; /记录数组长度 public: Array(int aa],int nn); /构造函数,利用aa数组长度nn初始化n, /利用aa数组初始化a所指向的数组空间 Array(const Array&aa); /拷贝构造函数 }; /在下面写出拷贝构造函数的类外定义 64
得 分 评卷人 五、编程题(每小题 6分,共 12分) 1.按照下面函数原型语句编写一个递归函数求出并返回数组 a中 n个元素的平方和。 int f(int a仁〕,int n); 2.根据下面类中拷贝构造函数的原型写出它的类外定义。 class Array{ 关 a; 刀指向动态分配的整型数组空间 /记录数组长度 Int .Int public: Array(int aaE],int nn); Array(const Array衣aa); //构造函数,利用 as数组长度 nn初始化n, /利用 as数组初始化 a所指向的数组空间 //拷贝构造函数 }; //在下面写出拷贝构造函数的类外定义
试卷代号:1008 中央广播电视大学2009一2010学年度第一学期“开放本科”期末考试 面向对象程序设计试题答案及评分标准 (供参考) 2010年1月 一、单项选择题(每小题2分,共20分) 1.C 2.C 3.A 4.D 5.C 6.B 7.C 8.A 9.D 10.D 二、填空题(每小题2分,共20分】 1.C 2.30 3.f 4.19 5.42 6.this 7.3 8.1 9.成员函数 10.结合性 三、程序填充题(根据题意在横线上填写合适的内容。每小题6分,共24分) 评分标准:每空3分 1.i++(或++i)、a[n-i-1] 2.x(3(或x(=2)、i++(或++i) 3.L==NULL(或!L)、p-)next 4.new、~A() 65
试卷代号:1008 中央广播电视大学2009-2010学年度第一学期“开放本科”期末考试 面向对象程序设计 试题答案及评分标准 (供参考) 2010年 1月 一、单项选择题 (每小题 2分 ,共 20分) 1. C 6. B 2. C 3. A 4. D 5.C 7. C 8. A 9. D 10. D 二、填 空题(每小题 2分 ,共 20分 ) 1. C 2. 30 3. if 4. 19 5. 42 6. this 7. 3 8. 1 9.成员函数 10.结合性 三、程序填充题(根据题意在横线上填写合适的内容。每小题 6分,共 24分) 评分标准:每空 3分 1. i++(或++i),a[n一i一1]、 2. x(3(或 x(=2) ,i++一(或++i) 3. L ==NULL(或 !L) ,p一>next 4. new、一A()
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的函数功能。(每小题6 分,共24分) 评分标准:第3、4小题根据叙述完整程度酌情给分。 1.106 2.58 3.把b所指向的字符串拷贝到a所指向的字符数组空间中。 4.从一维数组a[n]中顺序查找值为key的元素,若查找成功则返回真否则返回假。 五、编程题(每小题6分,共12分) 评分标准:按编程完整程度酌情给分。 1.int f(int a],int n) { if(n==0)return 0; /1分 else return a[n-1]*a[n-1]+f(a,n-1); /16分 } 2.Array:Array(const Array&.aa)( n=aa.n; 111分 a=new int[n]; 1/3分 for(int i=0;i<n;i++)a[i]=aa.a[i]; /16分 66
四、理解问答题 ,分别写出前 2小题的程序运行结果和指出后 2小题的函数功能。(每小题 分 .共 24分 ) 评分标准:第 3,4小题根据叙述完整程度酌情给分。 .106 .把 b所指向的字符串拷贝到 a所指向的字符数组空间中。 .从一维数组 a[n」中顺序查找值为 key的元素,若查找成功则返回真否则返回假。 五、编程题 (每小题 6分 ,共 12分 ) 评分标准 :按编程完整程度酌情给分。 1. int f(int a[],int n) ==0) return 0; return a[n一1],a[n-1]+f(a,n一1); 刀1分 //6分 .Array::Array(const Array& aa){ n= aa. n; a=new int[n]; for(int i=0;i<n; i-1-+)a[i]=aa. a[i]; 刀1分 刀3分 刀6分