试卷代号:1008 座位号■■ 中央广播电视大学2008-2009学年度第二学期“开放本科”期末考试 面向对象程序设计试题 2009年7月 题 号 二 三 四 五 点 分 分 数 得分 评卷人 一、单项选择题(每小题2分,共20分) 1.程序中主函数的名字为()。 A.main B.MAIN C.Main D.任意标识符 2.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A.内联函数 B.重载函数 C.递归函数 D.函数模板 3.将两个字符串连接起来组成一个字符串时,选用( )函数。 A.strlen() B.strcpy() C.strcat() D.stremp() 4.用nw运算符创建一维整型数组的正确语句是()。 A.int p=new a[10]; B.int p=new float[10].; C.int¥p=new int[l0]; D.int p=new int5]=(1,2,3,4,5); 5.假定有定义“intb[10];int pb;”,则不正确的赋值语句为( )。 A.pb=b; B.pb=&b[0]; C.pb=new int; D.pb=b[5]: 57
试卷代号:1008 座位号巨一二] 中央广播电视大学2008-2009学年度第二学期“开放本科”期末考试 面向对象程序设计 试题 2009年冲月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题 2分,共20分) 1.程序中主函数的名字为( )。 A. main B. M AIN C. M ain D.任意标识符 2.为了提高程序的运行速度 ,可将不太复杂的功能用函数实现 ,此函数应选择 ( )。 A.内联函数 C.递归函数 B。重载函数 D.函数模板 3.将两个字符串连接起来组成一个字符串时 ,选用 ( )函数 。 A. strlen() B. strcpyO C. strcat() 玖 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.假定有定义“int b[10]; int * pb;",则不正确的赋值语句为( )。 A. pb=b; B. pb=&b仁。]; C. pb=new int; D. pb二b[5]; 57
6.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中 数据成员a的格式为( )。 A.x(a) B.x[a] C.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分) l.存储字符串"a"需要占用 个字节。 2.重载一个函数的条件是:该函数必须在参数的 或参数对应的类型上与其 它同名函数不相同。 3.假定P是一个指向整数对象的指针,则用 表示该整数对象。 4.元素a[i门的指针访问方式为 5.已知有定义“intx,a[3]={5,7,9},*pa=a;”,在执行“x=十十*pa;”语句后,x的值 是 58
6.假定 AA为一个类 ,a为该类公有的数据成员 ,x为该类的一个对象 ,则访 问 x对象 中 数据成员a的格式为( )。 A. x(a) C. x- } a B. x[a] D. x. a 7.假定 AB为一个类 ,则执行“AB x(a,5);”语句时将 自动调用该类 的( )。 带参构造函数 拷贝构造函数 .无参构造函数 .赋值重载 函数 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,存储字符串‘/art需要占用_ 个字节。 2.重载一个函数的条件是:该函数必须在参数的_ 或参数对应的类型上与其 它同名函数不相同。 3.假定p是一个指向整数对象的指针,则用 表示该整数对象。 4.元素 all〕的指针访问方式为 5.已知有定义“int x, a[3〕二{5,7,9}, * pa=a;",在执行“x=++ * pa;”语句后,x的值 是 58
6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度 为length,则队列为满的条件是 7.对类中对象和基类成员的初始化只能通过在构造函数中给出的 来实现的。 8.假定AB为一个类,则执行"ABa,b(2),c[3],p=&a;"语句时共调用该类无参构 造函数的次数为次。· 9.假定派生类及其基类中都定义有同名函数成员,若要在派生类中调用基类的同名函数 成员时,就需要在其函数名前加上 和类区分符。 10.派生类的成员函数能够直接访问所含基类的 成员和保护成员。 得分 评卷人 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分, 共24分) 1.对数组a中的元素按相反次序重新排列。 void PV(int a[],int n) { int i; for(i=0;i void main() 59
6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为 first,队列长度 为 length,则队列为满的条件是 7.对类中对象和基类成员 的初始化 只能通过在构造函数中给出的 来实现的。 8.假定AB为一个类,则执行”AB a, b(2), c[3],二P= &.a;”语句时共调用该类无参构 造函数的次数为 次。· 9.假定派生类及其基类 中都定义有同名函数成员 ,若要在派生类 中调用基类 的同名 函数 成员 时,就需要在其 函数名前加上 和类区分符 。 10.派生类的成员函数能够直接访问所含基类的 成员和保护成员。 得 分 评卷人 三、程序填充题 ,根据题意在横线上填写合适的内容。(每小题 6分, 共 24分 ) 对数组 a中的元素按相反次序重新排列 。 void PV(int a[],int n) fore=O;i void main()
int x; coutx;while( ); int i=2; dol while(x%==0)(coutdata<< p= cout<<endl; 4.类A的定义 class A{ char米a; public: A(){a=0;} 60
int x cout>x; while( i=2; ) O lt O ‘d .1 ‘d while(x%i二=0){cout+ i+ ";x/二 }while(idata<<} P- ; } cout< endl: 4.类 A的定义 class A { char*a public: A() (a=0; 60
A(char¥aa){ a- char[strlen(aa)十1];/进行动态存储分配 strcpy(a,aa);/用aa所指字符串初始化a所指向的动态存储空间 (delete []a;} /定义析构函数 }; 得分 评卷人 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题 的程序或函数功能。(每小题6分,共24分) 1.include #include<math.h inta[4]={36,-5,73,8}; void main() { int i,y; for(i=0;i<4;i++){ if(a[i门<0)y=a[i门; else if(a[i]<10)y=a[]*a; else y=2 a[i]-5; cout<<y<<’'; } cout<<endl; 运行结果: 2.include<iostream.h const int N=4; 61
A(char*aa){ a= char[strlen(aa)十1]; //进行动态存储分配 strcpy(a,aa); //用 as所指字符串初始化 a所指向的动态存储空间 {delete []a; 刀定义析构函数 得 分 评卷人 四、理解问答题 ,分别写出前 2小题的程序运行结果和指出后 2小题 的程序或函数功能。(每小题 6分,共 24分 ) 1.#include 井include int a[4〕二{36,一5,73,8}; void main() int i,y; for(i=0;i const int.N=4; 61
void fun(int x); void main() { for(int i=1;i>x; y=int(sqrt(x));//sqrt(x)为求x的算术平方根 for(int i=1;i<=y;i++) if(x%==0)cout<<"x="<<<<<x/i<<endl; 程序功能: 4.int Count(IntNode *f) {/调用时传送给f的是一个单链表的表头指针,其中next为结点指针域 if(!f)return0; int c=0; 62
void fun(int x) void main() for(int i=1;i #include void main() int x, y; cin; x y=int(sgrt(x)) ; //sgrt(x)为求x的算术平方根 for(int i=1;i<=y; i++) if(xooi==0) cout< "x="+ i+ ',,<<x八< endl; 程序功能 : 4. int Count(IntNode * f) 刀调用时传送给 f的是一个单链表的表头指针,其中next为结点指针域 if! in t c f) return 0 烤 0 62
while(f)( c++; f=f->next; return c; } 函数功能: 得 分 评卷人 五、编程题(每小题6分,共12分) 1.计算1十3十32十.,.十3的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累 加变量的标识符。 2.根据下面类中Min函数成员的原型和注释写出它的类外定义。 class AA{ int¥a时 int n; int MS; public: void InitAA(int aa[],int nn,int ms)( if(nn>ms)(cout<<"Error!"<<endl;exit(1);) MS=ms;n=nn;a=new int[MS]; for(int i=0;i<n;i++)a[i]=aa[i]; } int Min();//从数组a的前n个元素中求出最小值并返回 63
while(f) c+ + f=f->next; return c; 函数功能 : 得 分 评卷人 五、编程题(每小题 6分 ,共 12分) 1.计算 1+3+3Z十… +31”的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累 加变量的标识符 。 2.根据下面类 中 Min函数成员的原型和注释写出它的类外定义 。 class A A int int int 关 a; MS public: void InitAA(lnt as[],int nn, int ms){ if(nn>ms){cout< "Error!”< endl;exit(1); MS=ms; n=nn; a=new int[MS]; for(int i=0;i<n; i++)a[i]=as仁1]; int Min() ;刀从数组 a的前 n个元素中求 出最小值并返回
试卷代号:1008 中央广播电视大学2008一2009学年度第二学期“开放本科”期未考试 面向对象程序设计 试题答案及评分标准 (供参考) 2009年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.2 2.个数(或数目) 3.p 4.*(a十i) 5.6 6.length==MS 7.初始化表 8.4 9.基类名 10.公有(或公用) 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,共24分) 评分标准:每空3分 1.i++ a[n-i-1] 2.xnext 4.new ~A() 64
试卷代号:1008 中央广播电视大学2008-2009学年度第二学期“开放本科”期末考试 面向对象程序设计 试题答案及评分标准 (供参考) 2009年 7月 一、单项选择题(每小题 2分,共20分) 1.A 6_ D 2_ A 3. C 4. C 5. D 7.A 8_ B 9. C 10. C 二、填空题 (每小题 2分 ,共 20分) l. 2 2.个数(或数 目) 3. *p 4. 二(a+i) 5. 6 6. length==MS 7.初始化表 8. 4 9.基类名 10.公有(或公用) 三、程序填充题 ,根据题意在横线上填写合适的内容。(每小题 6分,共 24分) 评分标准:每空 3分 1. i++ a[n-i-1] 2, x<3(或 x<=2) i十+ 3. L==NULL(或!L) p-Snext 4, new 一A() 64
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每 小题6分,共24分)】 评分标准:第3、4小题根据叙述完整程度酌情给分。 1.67-514164 2.41636 3.把从键盘上输入的一个整数×分解为所有可能的每两个因子之积。 4.统计出以表头指针为f的单链表中结点的个数。 五、编程题(每小题6分,共12分】 评分标准:根据编程情况酌情给分。 1.include<iostream.h void main() { int i; int p=1; 11分 int s=1i 1/2分 for(i=1:i<=10;i++){p*=3;s+=p;} 1/5分 cout<<s<<endl; 1/6分 } 2.int AA:Min() 分 int x=aL0]; 12分 for(int i=1;i<n;i+) if(a[i]x)x=a[i]; 15分 return x; /16分 65
四、理解问答题 ,分别写出前 2小题的程序运行结果和指 出后 2小题的程序或函数功能。(每 小题 6分 ,共 24分 ) 评分标准 :第 3,4小题根据叙述完整程度酌情给分。 1. 67一 5 141 64 2. 4 16 36 把从键盘上输人 的一个整数 x分解为所有可能的每两个因子之积 。 统计出以表头指针为 f的单链表中结点的个数 。 五、编程题 (每小题 6分 ,共 12分) 评分标准:根据编程情况酌情给分。 1.#include void main() int 1; in t in t p= 1 for(i=1;i<=10;i+十){P‘=3; s十=P cout< s< endl; 刀1分 刀2分 刀5分 //6分 2. int AA::Min() //1分 int x二a[0] //2分 for(int i=1;i<n; i++) if(a[i]<x) x=a[i]; return x 刀5分 //6分