试卷代号:1008 座位号■ 中央广播电视大学2009-一2010学年度第二学期“开放本科”期末考试 面向对象程序设计 试题 2010年7月 题 号 二 三 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题2分,共20分) 1.程序中主函数的名字为( )。 A.main B.MAIN C.Main D.任意标识符 2.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A.内联函数 B.重载函数 C.递归函数 D.函数模板 3.将两个字符串连接起来组成一个字符串时,选用( )函数。 A.strlen() B.strcpy() C.strcat() D.strcmp() 4.用new运算符创建一维整型数组的正确语句是()。 A.int p=new a[10]; B.int p=new float[10]; C.int p=new int[10]; D.int¥p=new int[5]={1,2,3,4,5}; 5.假定有定义“intb[l0];int*pb;”,则不正确的赋值语句为( )。 A.pb=b; B.pb=&b[0]; C.pb=new int; D.pb=b[5]; 6.假定AA为一个类,为该类公有的数据成员,x为该类的一个对象,则访问x对象中 数据成员a的格式为( )。 A.x(a) B.x[a] C.x-)a D.x.a 58
试卷代号 0 0 8 座位号 中央广播电视大学 2 0 2010 学年 放本 面向对象程序设计试题 2010 年7 题号 总分 分数 得分|评卷入 一、单项选择题(每小题 2分,共 0分} 1.程序中主函数的名字为( )。 A. main B. MAIN C. Main D. 标识符 2. 提高 运行速度 功能 应选 )。 A. 数B.重载 c.递归函数 .函数模板 3. 个字符 选用 )函数。 A. strlenO C. strcatO B. strcpy() D. strcmpO 4. 符创 数组 )。 A. int 铃p=new a[lO]; C. int 祷p= 丑ew int[10]; B. int 祷p=new float[lO]; D. int 铃p=new int[5] = D,2 , 3 ,4 , 5}; 5. 义"int b[lO]; int 祷pb )。 A. pb=b; B. pb=&b[O]; C. pb=new int; D. pb=b[5]; 6. 假定 AA 类公 据成 数据成员 a的格式为( )。 58 A. x(a) c. 一)a B. x[a] D. x.a
7.假定AB为一个类,则执行“ABx(a,5);”语句时将自动调用该类的()。 A.带参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值重载函数 8.对于任一个类,用户所能定义的析构函数的个数至多为()。 A.0 B.1 C.2 D.任意个 9.对类中引用成员的初始化是通过构造函数中给出的( )实现的。 A.函数体 B.参数表 C.初始化表 D.初始化表或函数体 10.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调 用格式,则可表示为()。 A.a.operator==(b) B.b.operator==(a) C.operator==(a,b) D.operator==(b,a) 得 分 评卷人 二、填空题(每小题2分,共20分)】 1.在C十十程序中包含一个头文件或程序文件的预处理命令的标识符为 2.C++常数0x45对应的十进制值为 3.元素类型为int的数组a[10]共占用字节的存储空间。 4.在C十十语言中,一个函数由函数头和 这两个部分组成。 5.一个指针类型的对象占用内存的个字节的存储空间。 6.假定一个二维数组为c[5][8],则c[3]的值为二维元素 的地址。 7.与结构成员访问表达式(p).score等价的表达式是 8.对于类中定义的任何成员,其隐含访问权限为 9.假定AA是一个类,“AA*abc();”是该类中一个成员函数的原型,则在类外定义时的 函数头为 10.假定AB为一个类,则执行“ABa[20]:”语句时,系统自动调用该类无参构造函数的 次数为 59
7. 定AB 行"AB x(a )。 A. 数B. c.拷贝构造函数 .娥值重载函数 8. 个数至多 )。 A. 0 B. 1 C. 2 D. 任意 9. 对类 中 引 员 的初始 是通 构造 )实现的。 A. B. 参数 C. 始化表 D. 始化表或 10. 果表 式a==b = = 重载 运算 算符 用格式,则可表示为( )。 A. a. operator= = (b) C. operator= = (a ,b) 得分|评卷人 B. b. operator= = (a) D. operator==(b ,a) 的地址。 二、填空题(每小题 2分,共 0分} 1.在 +程序中包含一个头文件或程序文件的预处理命令的标识符为 2. 数Ox45 3. 为int 组a[10] 4. + + 这两 分组 5. 指针类 对象 字节 6. 假定 为c[5][8] ,则 ]的值为二维元素 7. 达式 祷p). score 表达式 8. 于类 定义 限为 9. 定AA 是一个类 "AA 头abcO; "是该类中一个成员函数的原型,则在类外定义时的 函数头为 10. 定AB 个类 行"AB a[20];" 动 调 类无 参构 造 次数为 59
得 分 评卷人 三、程序填充题(根据题意在横线上填写合适的内容。每小题6分, 共24分)】 1.下面函数是求两个整型参数a和b的最小公倍数。 int f2(int a,int b) int i=2,p=1; do{ while(a%i==08.&. p*=i;a/=i;b/=i; } i++; )while(a=i&& return p*a b; 2.对数组a中的元素按相反次序重新排列。 void PV(int a],int n) { int i; for(i=0;i<n/2;i++){ int x=a[i]; 60
得分|评卷人 三、程序填充题{根据题意在横线上填写合适的内害。每小题 1.下面函数是求两个整型参数 b的最小公倍数。 int £2 Gnt a , int h) int i=2 , p=l; 60 do { while(a%i= =0 && 祷=i; a/=i; b/=i; i++; }while(a>=i && return 铃a 祷h; 2. 对数组 序重新 void PVGnt int n) mt 1; £orG=O; i<n/2; { int x=a[i]; • , • , ) {
3.假定有定义为“struct NODE{int data;NODE next;);”,下面算法是把以L为表头 指针的单链表中各结点依次按相反次序链接并返回新链表的表头指针。 NODE*f8(NODE¥L) { if(L==NULL)return NULL; NODE¥p=NULL,米q=L,¥t; //P为新链表的表头指针,初始值为空 while(q!=NULL){ //通过q遍历L单链表 t=q; q=q->next; t-)next= p= return p; 4.类A的定义 class A int a;int n;int MaxLen; public: A():a(0),n(0),MaxLen(0){} //无参构造函数 A(int aa,int nn,int MM) //带参构造函数 n=nn; MaxLen=MM; if(n>>MaxLen)exit(1); a=new int[MaxLen]; for(int i=0;i<n;) ;//利用数组aa给数组a赋值 } ~A() ;} //释放动态存储空间 int GetValue(int i)(return a[i];} /函数返回a[i门的值 61
3. 有定 为"struct NODE{int data; NODE 铸next; }户,下面算法是把以L为表头 指针的单链表中各结点依次按相反次序链接并返回新链表的表头指针。 NODE 铃f8(NODE祷L) if(L= = NULL) return NULL; NODE 保p=NULL 特q=L 铃t; whi1e(q! =NULL) { t=q; lip 表头 为 空 II q=q一>next; t-)next= p= return p; 4. 类A class A { • , • , int 祷a; int n; int MaxLen; public: AO: a(O) , n(O) , MaxLen(O) {} Cint 铃aa int nn , int MM) { n=nn; MaxLen=MM; if(n>MaxLen) exit(l) ; a=new int[MaxLen]; forCint i=O; i<n; 十 十 II无参 II带参 ; II 赋值 int GetValueCint i) {return a[i] ~AO{ II II 数返 61
得分 评卷人 四、理解问答题(分别写出前2小题的程序运行结果和指出后2小题 的函数功能。每小题6分,共24分) 1.#includeiostream.h) const int T=6; void main() int i,j,k=0; for(i=1;i<=T;i+=2){ for(j=2;j<=T;j+=2)k++; cout<<"k="<<<<endl; 运行结果: 2.include(iostream.h) class CE{ private: int a,b,c; public: CE(int aa,int bb,int cc):a(aa),b(bb),c(cc)(} int GetSum()(return a+b+c;) }; void main() { intx=5,y=12,z=8; CE ex(x,y,z); cout(ex.GetSum()((endl; 运行结果: 3.int PP(int n) int i,p=1; for(i=1;i<=n;i++)p*=i; return p; } 函数功能: 62
得分|评卷人 四、理解问答题(分别写出前 2小题的程序运行结果和指出后 2小题 的函数功能。每小题 6分,共 4分) 1. # include<iostream. h) const int T=6; void main() int i,j ,k=O; for <i=l;i<=T;i十=2){ for(j=2 ;j<=T;j 十=2) k+ 十p cout«"k= "«k«endl; 2. 3. 运行结果: # include< iostream. h) class CE { pnvate: int a ,b, c; public: CE(int aa , int bb , int cc): a(aa) , b(bb) , c(cc) {} int GetSumO {return 十b十cd void mainO int x=5 ,y=12 ,z=8; CE ex(x,y,z); cout«ex. GetSumO «endl; 运行结果: int PP<int n) int i,p= 1; for <i=l;i<=n;i+ 祷=ip return p; 函数功能: 62
4.int f(char *s) { int i=0; while(*s++)i++; return i; }; 函数功能: 得 分 评卷人 五、编程题(每小题6分,共12分) 1.根据下面函数原型编写一个函数,求出并返回由字符指针a所指向的字符串中包含的 所有英文字母的总数。 int CT(char a); 2.根据下面类中Reversel函数成员的原型和注释写出它的类外定义。 class AA int a; int n; public: void InitAA(int aa],int nn){ n=nn;a=new int[n]; for(int i=0;i<n;i++)a[i]=aa[i]; } AA Reversel();/通过动态存储分配得到一个AA类对象并由x所指向, /并动态分配x一)a[x一)n]数组空间,要求x一)n的值等于this一)n /的值,x一)a[x一)n]中每个元素的值是按照this一)a[n]中数组元素的 /相反次序排列得到的,要求该函数返回x的值。 63
4. int {(char 祷s) int i=O; while( 铃s++)i++; return 1; ··i 五、编程题(每小题 6分,共 2分) 1.根据下面函数原型编写一个函数,求出井返回由字符指针 a所指向的字符串中包含的 所有英文字母的总数。 int CT(char 祷a) ; 2. 根据下面 中Reverse1 外定义 class AA { tnt * a; tnt n; public: void InitAA(int aa int nn) { n=nn; a=new int[n]; for(int i=O; i<n; i++) a[i]=aa[i]; AA 讼Reverse1() ; I 通过 态存 分配得 类对象并 II 数组 要求 n II 是按 II 相反 63
试卷代号:1008 中央广播电视大学2009一2010学年度第二学期“开放本科”期末考试 面向对象程序设计 试题答案及评分标准 (供参考) 2010年7月 一、单项选择题(每小题2分,共20分) 1.A 2.A 3.C 4.C 5.D 6.D 7.A 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分。 1.b%i==0、b)=i 2.a[i]=a[n-i-1]、a[n-i-1]=x 3.p、t 4.ali]=aaCi],delete []a 64
试卷代号: 1008 中央广播电视大学 0 0 2010 年 度 本科 末考 面向对象程序设计试题答案及评分标准 (供参考) 2010 年7 一、单项选择题{每小题 1. A 2. A 3. C 6. D 7. A 8. B 二、填空题(每小题 2 0 1. # include 2. 69 3. 40 4. 5. 4 6. c[3][0] 4. C 9. C 5. D 10. C 7. p- >score 8. privateC 私有 9. AA 祷AA: :abcO 10. 20 三、程序填充题(根据题意在横线上填写合适的内容。每小题 2 4 评分标准 3分。 1. b%i= =0 、b) =i 2. a[i]=a[n 一i-I] 、a[n-i-I]=x 3. 、 t 4. a[i] = aa[i] 、delete []a
四、理解问答题(分别写出前2小题的程序运行结果和后2小题的函数功能。每小题6分,共 24分) 1.k=9 2.25 3.返回参数n的阶乘值。 4.求出并返回字符指针参数s所指向的字符串长度。 五、编程题(每小题6分,共12分) 1.根据完整程度酌情给分。 int CT(char a)( int c=0; /11分 while(a){ if(*a>=’a’&&*a=’A’&&*a>=’Z')c+ +; a十+; } 115分 return c; /16分 } 2.请根据完整程度酌情给分。 AA¥AA::Reversel() 1/1分 AA¥x=new AA; /12分 x-)n=n; /13分 x-)a=new int[x->n]; /14分 for(int i=0;i(n;i++) x-)a[n-1-i]=a[i]; /15分 return X; 116分 65
四、理解问答题{分别写出前 IJ 24 1. k=9 2. 25 3. 参数 4. 参数 五、编程题(每小题 6分,共 2分} 1.根据完整程度酌情给分。 int CT(char 铃a) { int c=05 //1 while( 祷a) { if( (祷 'a' &.&.祷 I I (羡 &. &.祷 ) ) 十号 return c; 2. 整程 AA 祷AA: :Reverse1 0 AA 势x=new AA; 一>n=n; 一>a=new int[x一>n] ; for(int i=O; ia[n-1一i]=a[i]; return x; //5 //6 //1 //2 //3 //4 //5 //6 65