试卷代号:1008 座位号■■ 中央广播电视大学2006一2007学年度第二学期“开放本科”期末考试 计算机专业面向对象程序设计 试题 2007年7月 题 号 二 三 四 五 总 分 分 数 得 分 评卷人 一、单项选择(每小题2分,共20分) 1.字符串”a+b=12n"的长度为( )。 A.6 B.7 C.8 D.9 2.假定一个二维数组的定义语句为“inta[3][4]={3,4),{2,8,6};”,则元素a[2][1] 的值为( A.0 B.4 C.8 D.6 3.以下正确的描述是()。 A函数的定义可以嵌套,函数的调用不可以嵌套 B.函数的定义不可以嵌套,函数的调用可以嵌套 C.函数的定义和函数的调用均可以嵌套 D.函数的定义和函数的调用均不可以嵌套 61
试卷代号:1008 座位号口口 中央广播电视大学2006-2007学年度第二学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题 2007年 z月 题 号 四 五 总 分 分 数 得 分 评卷人 一 、单项选择(每小题 2分,共 20分 ) 1.字符串、}-b=12\矿的长度为( )。 A_ 6 B. 7 C. 8 D. 9 2.假定一个二维数组的定义语句为“int a[3]仁4] _ {{3,4},{2}8}6}};;,则元素 a[2]仁1] 的值为( )。 A. 0 C. 8 B. 4 D. 6 3.以下正确 的描述是( )。 A.函数的定义可以嵌套,函数的调用不可以嵌套 B.函数的定义不可以嵌套,函数的调用可以嵌套 C.函数的定义和函数的调用均可以嵌套 D.函数的定义和函数的调用均不可以嵌套
4.设有定义“double array[l0];”,则表达式sizeof(array)/sizeof(array[0])的结果为 array数组的()。 A.首地址 B.元素个数 C.每个元素所占的字节数 D.总字节数 5.若使p指向包含30个整型元素的动态数组空间,则使用的定义语句为()。 A.int p=new int[30] B.int p=new int(30) C.int p=new[30] D.p=new int[30] 6.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( )。 A.可维护性 B.可复用性 C.兼容性 D.正确性 7.在多文件结构的程序中,通常把类的声明单独存放于( )中。 A.主文件 B.实现文件 C.库文件 D.头文件 8.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度 为length,则队首的后一个位置为()。 A.first+1 B.(first+1)%MS C.(first-1)%MS D.(first+length)%MS 9.假定一个类的构造函数为“A(int aa=l,int bb=0){a=aa;b=bb;}”,则执行 “Ax(4):”语句后,x.a和x.b的值分别为( A.1和0 B.1和4 C.4和1 D.4和0 10.假定AB为个类,则执行“ABa(2),b[3],p[4];”语句时共调用该类构造函数的 次数为()。 A.3 B.4 C.5 D.9 62
4.设有定义“double array仁10]},",则表达式 sizeof (array ) /sizeof ( array [ 0 ])的结果为 array数组的( )。 A.首地址 B.元素个数 C.每个元素所 占的字节数 l。总字节数 5.若使 P指向包含 30个整型元素的动态数组空间,则使用的定义语句为( A. int*p二new int仁30] C. int*p=new[30] B. int*p=new int(30) D.二p=new int[30] 6.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( A.可维护性 B.可复用性 C.兼容性 D.正确性 7.在多文件结构的程序 中,通常把类的声明单独存放于( )中。 A.主文件 C.库文件 B.实现文件 D.头文件 8.在一个用数组实现的队列类中,假定数组长度为 MS,队首元素位置为 first,队列长度 为length,则队首的后一个位置为( A. first十 1 B. (first-i-1)%MS C. (first一1) CMS D. (first-length) %MS 9.假定一个类的构造 函数为“A (int as "A x(4) ;”语句后,x一 和 x. b的值分别为( = 1, int bb = 0) { a = aa; b = bb扮”,则执行 A. 1和 0 I3. 1和 4 C. 4和 1 U. 4和 0 10.假定 AB为一个类,则执行“AB a(2),b[3], * p[4];”语句时共调用该类构造kY}数的 次数为( )。 A 3 B. 4 C_ 5 D. 9
得分 评卷人 二、填空题(每小题2分,共20分) 1.用于输出表达式值的标准输出流对象是 2.假定x=5,y=6,则表达式x一一一一y的值为 3.假定x是一个逻辑量,则x true的值为 4.C十十提供的预处理命令有宏定义命令,条件编译命令和 命令。 5.假定a是一个一维数组,则a[i们的指针访问方式为 6.变量v定义为“double v=23.4;”,要使指针pv指向v,则定义pv的语句为 G 7.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数 名前必须加上 和两个冒号分隔符。 8.若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的 就代表了类 外的x对象。 9,假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为 l0.假定用户只为类AB定义了一个构造函数"AB(int aa,int bb=0){a=aa;b=bb;}, 则定义该类的对象时,其实参表中至多带有」 个实参。 得 分 评卷人 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分, 共24分)】 1.下面函数是求两个整型参数a和b的最小公倍数。 int f2(int a,int b) int i=2,p=1; do{ 63
得 分 评卷人 二、填空题 (每小题 2分 ,共 20分) .用于输出表达式值的标准输出流对象是_ .假定 x=5, y=6,则表达式 x一一 *一一Y的值为 3.假定 x是一个逻辑量 ,则 x}}true的值为 .C++提供的预处理命令有宏定义命令,条件编译命令和 .假定 a是一个一维数组,则 a[i]的指针访 问方式为 命令 。 6.变量 v定义为“double v = 23. 4;",要使指针 pv指向 v,则定义 Pv的语句 为 7.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数 名前必须加上 和两个冒号分隔符。 8.若采用 x. abr.(y)表达式调用一个成员函数,在成员函数中使用的 就代表了类 外的 x对象。 9.假定用户没有给一个名为 AB的类定义析构 函数,则系统为其定义的析构函数为 10.假定用户只为类 A)3定义了一个构造函数“ABGnt aa, int bb=0) {a=aa; b=bb; }` 则定义该类的对象时,其实参表中至多带有 个实参 。 得 分 评 卷 人 三、程序填充题,根据题意在横线上填写合适的内容。(每小题 }j分, 共 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=&&. return p a*b; 2.对数组a中的元素按相反次序重新排列。 void PV(int a[],int n) int i; for(i=0;inext; t->next= 64
while(a%i==0乙& ){ P‘=i;a/=i;b/=i; 1++ ; }while(a}=ia乙 return p * a * b 2.对数组 a中的元素按相反次序重新排列 。 void PV(int a仁丑,int n) for(i=0;iGn/2;i -f- -{-){ 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=}一)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 Get Value(inti){return a[]:}/函数体返回a[i门的值 }: 得 分 评卷人 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题 的程序或函数功能。(每小题6分,共24分)】 1.include<iostream.h const int B=2; void main() int p=1,s=1; while(s<50){ 65
P= return p 4.类 A的定义 class A { int } a; int n; int MaxLen; public A():a(0),n(0),MaxLen( 0 ){} a n 8 fl A(int* int nn, int MM) //无参构造 函数 //带参构造函数 n 二二 MaxLen= M M if(n}MaxLen) exit(1); a=new int[MaxLen]; for(int i=0;iCn; i+十) //利用数组 as给数组 a赋值 -}- A ( ) { ;} //释放动态存储空间 int GetValue(int i) {return a[i]; } //函数体返回a[i〕的值 得 分 评卷人 四、理解问答题 ,分别写出前 2小题的程序运行结果和指出后 2小题 的程序或函数功能。(每小题 6分,共 24分) 1.#include<iostream, h} const int B=2; void main() int p=1,s=1 while(s<50){ 65
p米=B; s十=P; cout class CE{ private: int a,b; int getmin()(return (aSetValue(x+y,y-z,10); coutGetMin()<<endl; 运行结果: 66
P*=B s十=P; cout+ "s="+ s+ endl; } 运行结果 : 2.#include class CE private: int a,b; int getmin(){return SetValueGetMin() + endl; 运行结果 : 66
3.int ff(int x,int y,char op)( int zi switch(op)( case+: cout>z if(x+y==z)return 1;else return 0; break; case'-': cout>z; if(x-y==z)return 1;else return 0; break; case'*: coui>z; if(x y==z)return 1;else return 0; break; case'/': cout>z; if(x/y==z)return 1;else return 0; break; default:cout='a'&&si]<='z')r[i门=si]-'a'+'A': 67
3. int ff(int x, int y,char op){ in t z switch( op){ Ca s e ‘+‘: cout+ x+ '+'+ y+ = ‘:cin} > z if(x-I-y==z) return 1;else return 0 break; ca s e coot } z; if(x*Y==z) return 1;else return 0; break; case’/‘: co}t+ x+ '/'+ y+ '=’;cin}?z; if(x% y=“z) return 1;else return 0; break; default; cout+ “运算符错,退出!‘,;exit(1); 函数功能 : 4. char*{(char*S){ int n=strlen(s) char* r=new char[n-f- 1]; for(int i=0;i<n if(s巨I} =ra ;i-}-+) a乙S[1}<二’z}) r[i]二s[i〕一‘a‘十’A 67
else r[i]=s[i]; r[n]=\o'; return r; 函数功能: 得 分 评卷人 五、编程题(每小题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(Array&aa); /拷贝构造函数 } 68
else r[i]=S[1]; r[n]= return \0 函数功能 : 得 分 评卷人 五、编程题(每小题 6分,共 12分) 1.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。 int flint a仁〕,int n); ?..根据下面类中拷贝构造函数的原型写出它的类外定义。 class Array{ int in t //指向动态分配的整型数组空间 //记录数组长度 public: Array(int as[],int nn); Array(Arrayaaa); //构造函数,利用 as数组长度 nn初始化 n, //利用 as数组初始化 a所指向的数组空间 //拷贝构造函数
试卷代号:1008 中央广播电视大学2006一2007学年度第二学期“开放本科”期末考试 计算机专业面向对象程序设计试题答案及评分标准 (供参考) 2007年7月 一、单项选择题(每小题2分,共20分) 1.B 2.A 3.B 4.B 5.A 6.C 7.D 8.B 9.D 10.B 二、填空题(每小题2分,共20分)】 1.cout 2.25 3.true(或1) 4.文件包含 5.*(a十i) 6.double pv=&v; 7.类名 8.*this 9.~AB()) 10.2 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,共24分) 评分标准:每空3分 1.b%i==0 b>=i 2.a[i]=a[n-i-l] a[n-i-1]=x 3.p t 4.a[i门=aa[i] delete [Ja 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每 小题6分,共24分) 评分标准:第3、4小题根据叙述完整程度酌情给分。 1.s=63 69
试卷代号:1008 中央广播电视大学2006-2007学年度第二学期“开放本科”期末考试 计算机专业 面向对象程序设计 试题答案及评分标准 (供参考) 2007年 7月 一、单项选择题(每小题 2分 ,共 20分 ) 1, B 2, A 3. B 4, B 5. A 6. C 7. D 8. B 9. D 10. B 二、填空题 (每小题 2分 ,共 20分) 1. tout 2. 25 3, true(或 1) 4.文件包含 5, * (a十i) 6. double*pv=av; 7.类名 8, * this 9.一ABC){} 10. 2 三、程序填充题 ,根据题意在横线上填写合适的内容。(每小题 6分,共 24分 ) 评分标准:每空 3分。 1. b%i==0 b>=1 2, a仁i]=a[n-i一1] a[n-i一I]=X 3. p t 4. a[i]=as[i] delete []a 四、理解问答题 ,分别写出前 2小题的程序运行结果和指出后 2小题的程序或函数功能。(每 小题 6分 ,共 24分) 评分标准:第 3,4小题根据叙述完整程度酌情给分。 1.s= fi3 69
2.4 3.以参数x和y作为运算对象,以参数op所存字符作为运算符,要求从键盘上输人运 结果,若正确则返回1否则返回0。 4.根据参数s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使s字 符串中的小写字母均变为大写。 五、编程题(每小题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); /6分 } 2.Array:Array(Array&aa)( n=aa.n; //1分 a=new int[n]; /13分 for(int i=0;i<n;i++)ati]=aa.ati]; //6分 7(
G. 4 3.以参数 x和 Y作为运算对象,以参数 op所存字符作为运算符,要求从键盘上输人运华 结果,若正确则返回1否则返回Oo 4.根据参数 s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使 s字 符串中的小写字母均变为大写 。 五 、编程题 (每小题 6分 共 12分 ) 评分标准 :按编程完整程度酌情给分。 l. int flint a[],int n) if(n= =0) return 0; 刀1分 else return a[n-1]*a[n-1]-{-f(a,n-1); //6分 } 2. l}array;:Array(Array邑 n= aa. n; a=new int仁n]; forGnt i=0;i<n, aa){ //1分 }}3分 i一+)a[i]=aa. a[i]; lip乡全