试卷代号:1008 座位 中央广播电视大学2008一2009学年度第一学期“开放本科”期末考试 面向对象程序设计 试题 2009年1月 题 号 三 四 五 总 分 分 数 得分 评卷人 一、单项选择题(每小题2分,共20分) 1.C十十程序的基本功能模块为( )。 A.表达式 B.标识符 C.语句 D.函数 2.当处理特定问题的循环次数已知时,通常采用( )来解决。 A,for循环 B.while循环 C.do循环 D.switch语句 3.下面函数原型语句正确的是()。 A.int Function(void a); B.void Function (int); C.int Function(a); D.int(double a); 4.假定变量m定义为“intm=7;”,则定义变量p的正确语句为()。 A.int p=&m; B.int p=&m; C.int &.p=*m; D.int *p=m: 56
试卷代号:1008 座位号!二二 中央广播电视大学2008-2009学年度第一学期“开放本科”期末考试 面向对象程序设计 试题 2009年 1月 题 号 四 五 总 分 分 数 得 分 评卷人 一、单项选择题(每小题 2分,共 20分) 1. C+十程序的基本功能模块为( )。 A.表达式 B.标识符 C.语句 D.函数 2。当处理特定问题的循环次数已知时,通常采用( )来解决 。 A. for循 环 l3. while循环 C.do循 环 D. switch语句 3。下面函数原型语句正确的是( A. int Function(void a); B. void Function(int) C. int Function(a); D. int(double a); 4.假定变量 m定义为“int m=7;",则定义变量 P的正确语句为( A. int p= B. int*P= &m; C. int &.p am; 二二 * m D. int,p=m;
5.假定变量a和pa定义为“double a[10],pa=a;”,要将12.35赋值给数组a中的下 标为5的元素,不正确的语句是()。 A.pa[5]=12.35; B.a[5]=12.35; C.*(pa+5)=12.35; D.*(a[0]+5)=12.35; 6.假定AA为一个类,a为该类私有的数据成员,Get Value()为该类公有函数成员,它返 回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。 A.x.a B.x.a() C.x->GetValue() D.x.GetValue() 7.类的构造函数是在定义该类的一个( )时被自动调用执行的。 A.成员函数 B.数据成员 C.对象 D.友元函数 8.假定AB为一个类,则执行“ABx;”语句时将自动调用该类的()。 A.带参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值重载函数 9.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为 该类定义的无参构造函数为()。 A.AB(){a=0;} B.AB(int aa=0):a(aa){) C.AB(int aa):a(aa)() D.AB(){} 1u.如果表达式a十十中的“十十”是作为普通函数重载的运算符,若采用运算符函数调 用格式,则可表示为()。 A.a.operator++() B.operator十+(a) C.opera1or十十(a,l) D.operator++(1,a) 57
5.假定变量a和 pa定义为“double a[10], * pa=a;",要将 12. 35赋值给数组 a中的下 标为 5的元素,不正确的语句是( A. pa[5]二12. 35 B. a仁5]=12. 35; C.*(pa十5)“12.35; D.*(a[0]+5)“12. 35; 6.假定 AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返 回 a的值,x为该类的一个对象,则访问x对象中数据成员 a的格式为( A. x. a B. x. a () C. x->GetValue() D. x. GetValue() 7.类 的构造 函数是在定义该类的一个( )时被 自动调用执行的 。 A.成员函数 B.数据成员 C。对象 D.友元函数 8.假定 AB为一个类 ,则执行“AB x;”语句时将 自动调用该类的( A.带参构造函数 B.无参构造函数 C.拷贝构造 函数 D.赋值重载函数 9.假定一个类 AB只含有一个整型数据成员 a,当用户不定义任何构造函数时 ,系统为 该类定义的无参构造函数为( A. AB(){a=0;} B. AB(int as=0):a(aa){} C. AB(int aa):a(aa){} D. AB(){} to.如呆表达式 a十十中的“十十”是作为普通函数重载的运算符,若采用运算符函数调 用格式,则可表示为( A. a. operator-+() C. operato:十+(a,1) B. operator++(a) D. operator++(1,a)
得分 评卷人 二、填空题(每小题2分,共20分) 1.C十十语言是在 语言的基础上发展起来的。 2.假定x=5,y=6,则执行表达式y*=x十十计算后,y的值为 3.在if语句中,每个else关键字与它前面同层次并且最接近的 关键字相配套。 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.斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,每个数等于其前两 个数之和。求斐波那契数列中的第10个数。 #include void main(){ int f,fl,f2,i; f1=0;f2=1; for(i=3;i<=10:i++){ 58
得 分 评卷人 二、填空题(每小题 2分,共 20分) 1. C++语言是在_ 语言的基础上发展起来的。 2.假定x=5,y=6,则执行表达式y*=x十+计算后,y的值为_ 。 3.在if语句中,每个else关键字与它前面同层次并且最接近的_ 关键字相配套。 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.斐波那契数列的第 1和第 2个数分别为 0和 1,从第 三个数开始 ,每个数等于其前两 个数之和。求斐波那契数列中的第 10个数。 #include void main(){ int f,fl,f2,i; fl=0;f2=1; for(i=3;i< =10;i+ 十){
f= f1=f2; f2= coutnext=new NODE; p->data= i++; } p->next=NULL; /把最后一个结点的指针域置空 L=L->next; /1使L指向链表的第一个带值的结点 3.类A的定义 class A( int a; public: A(){a=0;} A(int aa):a(aa){) /定义构造函数,用参数aa初始化数据成员a }; main()( /定义类A的指针对象p /用p指向动态对象并初始化为整数5 59
二f2; 一一 卜 于 coutnext=new NODE; P一>data= ; i+ 十 : p->next=NULL; //把最后一个结点的指针域置空 L=L->next; //使 L指向链表的第一个带值的结点 } 3.类 A的定义 class A { int a; public: A(){a=0;} M int aa):a(aa)份 //定义构造函数,用参数as初始化数据成员 a main(){ 刀定义类 A的指针对象 p 刀用 P指 向动态对象并初始化为整数 5
4.类Goods的定义 class Goods{ private: char name[20]; /1商品名称 int weight; /商品重量 public: Goods (char str,int w){ //构造函数 strcpy(name,str); weight-w; } char¥GetN(){ /返回商品名称 int GetW() /返回商品重量 得 分 评卷人 四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题 的程序或函数功能。(每小题6分,共24分) 1.include inta[6]=(3,10,15,8,12,5}; void main(){ int s0,s1,s2; s0=s1=s2=0; for(int i=0;i<6;i+)( switch(a[i]%3)( case 0 s0+=aLi];break; case1tsl+-a[i门;break; case 2 s2+=aCi];break; 60
4.类 Goods的定义 class Goods private; char name[20]; int weight; //商品名称 //商品重量 public Goods (char*sir, int w){ //构造函数 strcpy(name,str); weight=w; char, GetN ){ //返回商品名称 又nt GetW(){ //返回商品重量 得 分 评卷人 四、理解问答题 ,分别 写出前 2小题的程序运行结果和指出后 2小题 的程序或函数功能。(每小题 6分.共 24分) 1.#include int a[6〕二{3,10,15,8,12,5}; void main(){ int s0,sl,s2 s0 = s1= s2二0 for(int i=0;i<6;i++){ switch(a[i]%3){ case 0:s0十 二 case 1:sl十 二 case 2:s2十 二 a[i];break; a[i];break; a[i];break; 60
cout class CD{ char a; int b; public: void Init(char aa,int bb){ a=new char[strlen(aa)+1]; strcpy(a,aa); b=bb; void Output()(cout<<a<<<<<<endl;) }; void main(){ CD dx; dx.Init("abcdef",30); dx.Output(); } 运行结果: 3.void SJ(int n)( int i=0,x; while(i<n) x=rand()%90+10; if (x%2==0)continue; 61
cout #include class CD { char* a; int b; public; void Init(char,aa, int bb){ a=new char仁strlen(aa)+1]; strcpy(a,aa); b=bb; } void Output(){cout< a<<' '< b< endl; }; void main(){ CD dx: dx. Init("abcdef",30) dx. Output(); 运行结果 : 3. void 5J(int n)( int i= 0,x while(i<n){ x=rand() %90+10; if(x肠2=二0) continue 61
i十+;cou1<<x<<’’: 函数功能: 4.int fun8(int at],int n) int s=0; for(int i=0;i<n;i++)s+=ati]; return s; 函数功能: 得分 评卷人 五、编程题(每小题6分,共12分) 1.求满足表达式22+42十,·十n的值,其中n取从键盘输人值的最大偶数。假定分别 采用i和s作为循环变量与求和变量,并限定使用for循环编程。 2.编写出下面Strings类的构造函数的类外定义。 class Strings( char¥s:/指向动态分配的字符串数组空间 intn;//记录字符串长度 public: Strings(char¥str);//构造函数 62
i斗一+;cout< <x< ’ 函数功能 : 4. MI fun8(int a厂〕,int;,){ int s= 0; for(int i=0;1<。;1++)s+=a[i]; return s; 函数功能 : 得 分 评卷人 五、编程题 f每小题 6分,共 12分 ) 1.求满足表达式 22 +42十… 十n2的值,其中 Il取从键盘输入值的最大偶数。假定分别 采用 i和 s作为循环变量与求和变量,并限定使用 for循环编程。 2.编写出下面 Strings类的构造函数的类外定义。 class Strings{ char * s;//指向动态分配的字符串数组空间 int n;/八己录字符串长度 public; Strings(char * str);//构造函数 };
试卷代号:1008 中央广播电视大学2008一2009学年度第一学期“开放本科”期末考试 面向对象程序设计试题答案及评分标准 (供参考) 2009年1月 一、单项选择题(每小题2分,共20分)】 1.D 2.A 3.B 4.B 5.D 6.D 7.C 8.B 9.D 10.C 二、填空题(每小题2分,共20分)】 1.C 2.30 3.if 4.19 5.42 6.this 7.构造函数 8.1 9.成员函数 10.结合性 三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,共24分) 评分标准:每空3分 1.f1+f2f 2.i<n tableCi] 3.A米p p=new A(5) 4.return name ,return weight 63
试卷代号:1008 中央广播电视大学2008-2009学年度第一学期“开放本科”期末考试 面向对象程序设计 试题答案及评分标准 (供参考) 2009年 1月 一、单项选择题(每小题 2分 ,共 20分) 1. D 6. D 2. A 3.B 4. B 5. D 7. C 8. B 9. D 10. C 二、填空题(每小题 2分,共 20分) 1. C 2. 30 3. if 4. 19 5. 42 6. this 7.构造函数 8. 1 9.成员函数 10.结合性 三、程序填充题,根据题意在横线上填写合适的内容。(每小题 6分,共 24分) 评分标准:每空 3分 1. fl+f2 f 2. i<n table[i] 3. A 二p p=new A(5) 4. return name、return weight
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每 小题6分,共24分) 评分标准:第3、4小题根据叙述完整程度的情给分。 1.301013 2.abcdef 30 3.随机产生并输出n个11至99之间的素数。 4.计算并返回一维数组a中n个元素之和。 五、编程题(每小题6分,共12分) 评分标准:根据编程情况酌情给分。 1.#include void main() int n,i=0,s=0; /11分 cin>>>n; /12分 if(n%2==1)n=n-1; 113分 for(i=2;i<=n:i+=2)s+=i*i; /15分 cout<"s="<<s<.<endl; /16分 2.Strings::Strings(char str)( /11分 n=strlen(str); /12分 s=new char[n+1]; 114分 strcpy(s,str); /16分 64
四、理解问答题,分别写出前 2小题的程序运行结果和指 出后 2小题 的程序或函数功能。 (每 小题 6分 .共 24分) 评分标准:第 3,4小题根据叙述完整程度酌情给分。 30 10 13 abcdef 30 .随机产生并输 出 n个 11至 ” 之间的素数。 .计算并返回一维数组 :,中 n个元素之和。 五 、编程题 (每小题 6分 ,共 12分) 评分标准 :根据编程情况酌情给分 。 井include void main() int n, I= cln> > n i 'f(nY62==1)n=n一1; for(i=2;i<=n; i+=2)s十=i* Co},It< "s= ”< s<<endl 刀1分 刀2分 刀3分 //J分 //6分 .Strings::Strings(cliar,str) n=strlen(str); =new char仁n+1] strcpy(s,str); 刀1分 //2分 //4分 刀 6分 以