试卷代号: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<n/2; int x=a]; a[i]= a[n-i-1]=x; 2.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的 输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为 “37”。 #include<iostream.h> 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< n/2; ){ int x=a仁1〕; a[i]= a[n一i一1]=x; } 2.把从键盘上输人的一个大于等于3的整数分解为质因子的乘积。如输人 24时得到的 输出结果为“2223",输人 50时得到的输出结果为“2 5 5 ",输人 37时得到的输出结果为 "37 。 #include<iostream. h> void main()
int x; cout<<"请输入一个整数,若小于3则重输:"; do cin>x;while( ); int i=2; dol while(x%==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=Li while(p){ cout<<p->data<< p= cout<<endl; 4.类A的定义 class A{ char米a; public: A(){a=0;} 60
int x cout< ”请输人一个整数,若小于 3则重输:”; cin>>x; while( i=2; ) O lt O ‘d .1 ‘d while(x%i二=0){cout+ i+ ";x/二 }while(i<x); if (x1=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<<} 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<iomanip.h> #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< iomanip. h> 井include< math. h> int a[4〕二{36,一5,73,8}; void main() int i,y; for(i=0;i<4;i++){ if(a[i]<0) y=a仁1〕; elseif<[i]<10) y二a[i] * a仁i]; else y = 2*a[i〕一5; cout< y+ ” ; cout< endl 运行结果 : 2.#include<iostream. h> const int.N=4; 61