试卷代号: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<<"请输人一个整数,若小于3则重输:”; do cin>>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; cout< ”请输人一个整数,若小于 3则重输:”; do cin; x; while( ); int i=2; do{ while(x%i==0){cout+ i+ ”;x/= while(i< x); if (x!=1)cout< x; cout< < endl 3.假定有定义为“struct NODE{ int data; NODE * next; } ;",下面算法遍历输出以参数 L为表头指针的单链表中每个结点的值。 void f6(N ODE, L) return NODE‘ p=L; while(p){ cout< p一>data< ”; 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 运行结果: