面向对象程序设计网上教学活动文本(2006.9.26)资料_第1页
面向对象程序设计网上教学活动文本(2006.9.26)资料_第2页
面向对象程序设计网上教学活动文本(2006.9.26)资料_第3页
面向对象程序设计网上教学活动文本(2006.9.26)资料_第4页
面向对象程序设计网上教学活动文本(2006.9.26)资料_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计网上教学活动文本( 2006.9.26)再次欢迎大家参加课程网上答疑活动 !课程教学资源情况:1.主教材《C++面向对象程序设计》王萍主编 清华大学出版社出版;2.实验教材《面向对象程序设计实验》 徐孝凯主编 中央广播电视大学出版社出版;3.录像教材《面向对象程序设计》录像 王萍主讲 中央广播电视大学音像出版社出版;4.面向对象程序设计形成性考核册 中央电大教育杂志社出版发行;5.面向对象程序设计期末复习指导;6.IP课件和CAI课件正在制作中。关于考试改革的情况说明:1.从本学期开始,该课程的期末闭卷考试时间由 150分钟改为 120分钟;2.题型没有变化,题量有减少,但减少幅度不大,而题的难度有所降低,主要考察基本知识。附往届试卷:中央广播电视大学面向对象程序设计试题( 7)2004年9月题号 一 二 三 四 五 总分得分2006年1月考试已用一、单项选择题(每小题 2分,共20分)1. 程序中主函数的名字为( )。A.main B.MAIN C.Main D. 任意标识符2. 为了提高程序的运行速度, 可将不太复杂的功能用函数实现, 此函数应选择( )。A. 内联函数 B. 重载函数 C. 递归函数 D. 函数模板3. 将两个字符串连接起来组成一个字符串时,选用( )函数。A.strlen() B.strcap() C.strcat() D.strcmp()4. 用new运算符创建一维整型数组的正确语句是 __________。A.int*p=newa[10]; B.int*p=newfloat[10];C.int*p=newint[10]; D.int*p=newint[5]={1,2,3,4,5}5. 假定有定义“intb[10];int*pb; ”,则不正确的赋值语句为( )。A.pb=b; B.pb=&b[0]; C.pb=newint; D.pb=b[5];16. 假定AA为一个类,a为该类公有的数据成员, x为该类的一个对象,则访问 x对象中数据成员 a的格式为( )。A.x(a) B.x[a] C.x->a D.x.a7. 假定AB为一个类,则执行“ ABx(a,5); ”语句时将自动调用该类的 ( ) 。A. 带参构造函数 B. 无参构造函数C. 拷贝构造函数 D. 赋值重载函数8. 对于任一个类,用户所能定义的析构函数的个数至多为 ( ) 。A.0 B.1 C.2 D. 任意个9. 对类中引用成员的初始化是通过构造函数中给出的 ( ) 实现的。A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。A.a.operator==(b) B.b.operator==(a)C.operator==(a,b) D.operator==(b,a)二、填空题(每小题 2分,共20分)常数-4.205和6.7E-9分别具有__________和__________位有效数字。2. 元素类型为 double的二维数组 a[4][6] 共有________个元素,共占用________字节的存储空间。3.假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]和a[2][3]分别被初始化为_______和________。4.假定p为指向二维数组intd[4][6]的指针,则p的类型为________,其中一个元素d[i][j]表示成指针访问方式为____________。已知变量a定义为“inta=5;”,要使ra成为a的引用,则ra应定义为____________,要使rb指向a,则rb应定义为____________。若只需要通过一个成员函数读取其数据成员的值,而不需要修改它们,则应在函数头的后面加上________关键字;若只需要读取引用参数的值,不需要对其修改,则应在该参数说明的开始使用__________关键字。7 .假定一个类对象数组为 A[N],当定义该数组时,将自动调用该类的无参构造函数的次数为________次,当离开它的作用域时,将自动调用该类析构函数的次数为 ________次。.假定AB为一个类,则类定义体中的“AB(AB&x);”语句为该类______________的原型语句,而“operator=(AB&x);”为该类______________的原型语句。2在定义一个派生类时,使用__________关键字表示为私有继承,使用__________关键字表示为公有继承。重载一个运算符时,该运算符的__________、__________以及操作符的个数不允许改变。三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序后面的标号处。(每小题 5分,共20分)1. 在输出屏幕上打印出一个由字符 ’*’组成的等腰三角形,该三角形的高为 5行,从上到下每行的字符数依次为 1,3,5,7,9 。#include<iostream.h>voidmain(){inti,j;for(i=1;___(1)___;i++){for(j=1;j<=9;j++)if(j<=5-i||___(2)___)cout<< ’’;else___(3)___;cout<<endl;}}(1) (2) (3)从一个字符串中删除所有同一字符后得到一个新字符串并输出。#include<iostream.h>constintlen=20;voiddelstr(chara[],charb[],charc);voidmain(){charstr1[len],str2[len];charch;cout<<" 输入一个字符串 :";cin>>str1;cout<<" 输入一个待删除的字符 :";cin>>ch;delstr(str1,str2,ch);cout<<str2<<endl;}voiddelstr(chara[],charb[],charc){intj=0;for(inti=0;___(1)___;i++)if(___(2)___)b[j++]=a[i];3b[j]=___(2)___;}(1) (2) (3)3.已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符[]要对下标是否越界进行检查。classARRAY{int*v; // 指向存放数组数据的空间ints; // 数组大小public:ARRAY(inta[],intn);~ARRAY(){delete[]v;}intsize(){returns;}int&operator[](intn);};___(1)___operator[](intn)//[] 的运算符成员函数定义{if(n<0||___(2)___){cerr<<" 下标越界!";exit(1);}return___(3)___;}(1) (2) (3)一个类定义如下:classPoint{private:intx,y;public:Point(){x=y=0;}Point(intx0,inty0){x=x0;y=y0;}intGetX(){returnx;}intGetY(){returny;}voidPrint(){cout<<"Point("<<x<<","<<y<<")"<<endl;}___(1)___;// 友元函数声明___(2)___;// 友元函数声明};Pointoperator+(Point&pt,intdd)// 加号操作符重载函数,实现 Point 类对象与整数的加法{Pointtemp=pt;4temp.x+=dd;temp.y+=dd;returntemp;}Pointoperator+(Point&pt1,Point&pt2)// 加号操作符重载函数,实现两个 Point 类对象的加法{Pointtemp=pt1;temp.x+=pt2.x;temp.y+=pt2.y;___(3)___;}(1)(2)(3)四、理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。(每小题6分,共30分)#include<iostream.h>constintB=2;voidmain(){intp=1,s=1;while(s<50){p*=B;s+=p;}cout<<"s="<<s<<endl;}运行结果:2.#include<iostream.h>classCE{private:inta,b;intgetmin(){return(a<b?a:b);}public:intc;voidSetValue(intx1,intx2,intx3){a=x1;b=x2;c=x3;}intGetMin();};5intCE::GetMin(){intd=getmin();return(d<c?d:c);}voidmain(){intx=5,y=12,z=8;CE*ep;ep=newCE;ep->SetValue(x+y,y-z,10);cout<<ep->GetMin()<<endl;CEa=*ep;cout<<a.GetMin()*3+15<<endl;}运行结果:#include<iostream.h>classA{inta[10];intn;public:A(intaa[],intnn):n(nn){for(inti=0;i<n;i++)a[i]=aa[i];}intGet(inti){returna[i];}intSumA(intnn){ints=0;for(intj=0;j<nn;j++)s+=a[j];returns;}};voidmain(){inta[]={2,5,8,10,15,20};x(a,4);Ay(a,6);intd=1;for(inti=0;i<4;i++)d*=x.Get(i);intf=y.SumA(5);cout<<"d="<<d<<endl;cout<<"f="<<f<<endl;6}运行结果:4.#include<iostream.h>#include<stdlib.h>#include<time.h>constintN=10;intff(intx,inty){intz;cout<<x<<'+'<<y<<'=';cin>>z;if(x+y==z)return1;elsereturn0;}voidmain(){inta,b,c=0;srand(time(0));// 初始化随机数序列for(inti=0;i<N;i++){a=rand()%20+1; //rand() 函数产生 0-32767之间的一个随机数b=rand()%20+1;c+=ff(a,b);}cout<<" 得分:"<<c*10<<endl;}程序功能:char*f(char*s){intn=strlen(s);char*r=newchar[n+1];for(inti=0;i<n;i++)if(s[i]>='a'&&s[i]<='z')r[i]=s[i]-'a'+'A';elser[i]=s[i];r[n]= ’\0’;returnr;}程序功能:7五、编程题(每小题5分,共10分)编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中,该函数的原型如下。voidfun(char*a,intb[]);根据下面类中CompareBig函数成员的原型和注释写出它的类外定义。classAA{int*a;intn;intMS;public:voidInitAA(intaa[],intnn,intms){if(nn>ms){cout<<"Error!"<<endl;exit(1);}MS=ms;n=nn;a=newint[MS];for(inti=0;i<n;i++)a[i]=aa[i];}intCompareBig(AA&b);// 比较*this 与b的大小,从前向后按两数组// 中的对应元素比较,若 *this 中元素值大则返回 1,若b中元素值大则返回-1,若相等则继续比较下一个元素,直到// 一个数组中无元素比较,此时若两者的 n值相同则返回 0,// 否则若*this 中的n值大则返回 1,若b中的n值大则返回-1。};8中央广播电视大学面向对象程序设计试题答案及评分标准( 7)2004年9月一、单项选择题(每小题2分,共20分)1.A2.A3.C4.C5.D6.D7.A8.B9.C10.C二、填空题(每小题2分,共20分)评分标准:每小题若有两个空,则每空1分;若只有一个空,则每空2分。1.422.241923.804.int(*)[6]*(*(d+i)+j)5.int&ra=a;int*rb=&a;6.constconst7.NN 8. 拷贝构造函数 赋值重载函数9.privatepublic 10. 优先级 结合性三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序后面的标号处。(每小题 5分,共20分)评分标准:对一空给 2分,对两空给 4分,对三空给 5分。1.(1)i<=5(2)j>=5+i(3)cout<< ’*’2.(1)a[i]( 或a[i]!= ’\0’)a[i]!=c'\0'(1)int&ARRAY::n>=s(3)v[n]( 或*(v+n))(1)friendPointoperator+(Point&pt,intdd)friendPointoperator+(Point&pt1,Point&pt2)returntemp四、理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。(每小题6分,共30分)评分标准:第 4、5小题根据叙述完整程度酌情给分。1.s=632.4//3分27//3分3.d=800//3分f=40//3分4.让计算机随机产生出10道20以内整数的加法题供用户计算,每道题10分,计算完成后打印出得分。95. 根据参数 s所指向的字符串,生成一个由 r所指向的新字符串并返回,该字符串使字符串中的小写字母均变为大写。五、编程题(每小题 5分,共10分)评分标准:按编程完整程度酌情给分。1.voidfun(char*a,intb[]){inti;for(i=0;i<10;i++)b[i]=0;while(*a){intj=*a- ’0’;if(j>=0&&j<=9)b[j]++;a++;}}intAA::CompareBig(AA&b){intk;if(n>b.n)k=b.n;elsek=n;for(inti=0;i<k;i++)if(a[i]>b.a[i])return1;elseif(a[i]<b.a[i])return-1;if(k==n&&k==b.n)return0;elseif(k<n)return1;elsereturn-1;}中央广播电视大学计算机科学与技术专业面向对象程序设计试题( 9)2004年9月题号 一 二 三 四 五 总分得分已考一、单项选择题(每小题 2分,共20分)1.C++ 源程序文件的缺省扩展名为( )。A.cpp B.exe C.obj D.lik2.x>0||y==5 的相反表达式为( )。A.x<=0||y!=5 B.x<=0&&y!=510C.x>0||y!=5 D.x>0&&y==53. 在下面的字符数组定义中,( )有语法错误。。A.chara[20]= ”abcdefg”; B.chara[]= ”x+y=55.”;C.chara[15]; D.chara[10]= ’5’;以下正确的函数原型语句是()。A.doublefun(intx,inty); B.doublefun(intx;inty);C.doublefun(intx=5,inty); D.doublefun(intx,y);5. 软件产品可被全部或部分地重用于新的应用的能力叫做软件的( )。A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性6. 在多文件结构的程序中,通常把含有 main()函数的文件称为( )。A. 主文件 B. 实现文件 C. 程序文件 D. 头文件7. 在一个用链表实现的队列类中, 假定每个结点包含的值域用 elem表示,包含的指针域用next表示,链队的队首指针用 elemHead表示,队尾指针用 elemTail 表示,若链队为空,则进行插入时必须把新结点的地址赋给 ( ) 。A.elemHead B.elemTailC.elemHead 和elemTail D.elemHead 或elemTail8. 假定AB为一个类,则执行 ”ABa,b(2),c[3],*p=&a; ”语句时共调用该类无参构造函数的次数为 ( ) 次。A.5 B.6 C.3 D.49. 引入友元的主要目的是为了( )。A. 增强数据的安全性 B. 提高程序的可靠性C. 提高程序的效率和灵活性 D. 保证类的封装性10. 如果类B是在类A的基础上扩充而得到的,那么就称( )。类A为基类或父类,类B为超类或子类类A为基类、父类或超类,类B为派生类或子类类A为派生类,类B为基类类A为派生类或子类,类B为基类、父类或超类二、填空题(每小题 2分,共20分)1 .由函数原型语句“ int fun1(void); ”可知,该函数的返回类型为 ______,该函数带有______个参数。2.假定x是一个逻辑量,则x||false的值与x的值__________。3.作为语句标号使用的C++保留字case和defaule只能用于________语句的定义体中。114. 对一个二维字符数组 a进行初始化的数据表为 {”123”,”456”,”789”},则a[1]元素对应的字符串为 __________。5.NULL 是一个符号常量,通常作为空指针值,它的具体值为 ________。内联函数的定义模块与所属的________模块必须放在同一个文件中。.一个类的__________函数实现对该类对象进行初始化的功能。.假定用户为类AB定义了一个构造函数“AB(intaa=0):a(aa){}”,则定义该类的对象时,可以有________种不同的定义格式。重载抽取运算符>>时,其运算符函数的返回值类型应当是____________。若多个基类及其派生类中都定义了同名的函数成员,要访问一个类中的该成员函数时,就需要在函数名前加上______和__________。三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题5分,共20分)10i(1)i1x的值。1.下面程序计算出i1i!#include<iostream.h>voidmain(){doublex,p1=1,p2=1,s=0;inti,j=1;cout<<" 输入x的值:";cin>>x;for(i=1;____(1)____;i++){p1*=x;p2*=____(2)____;s+=j*p1/p2;j=____(3)____;}cout<<s<<endl;}(1) (2) (3)2.假定结点类型的定义为“structNODE{intdata;NODE*next;};”,下面算法是依次输出以L为表头指针的单链表中各结点的值。12voidff(NODE*L){for(___(1)___;p!=NULL;___(2)___)cout<<___(3)___<<'';cout<<endl;}(1) (2) (3).一个带类的程序如下:classA{inta,b;public:A(intaa=0,intbb=0)___(1)___{}// 分别用aa和bb对应初始化 a和b};voidmain(){___(2)___;// 定义类A的对象x并用5初始化,同时定义 y并用x初始化___(3)___;// 定义p指针,使之指向对象 x}(1) (2) (3).一个带类的程序如下:classA{inta,b;public:___(1)___// 定义构造函数,使参数 aa和bb的默认值为 0,// 在函数体中用 aa初始化a,用bb初始化b};voidmain(){A*p1,*p2;___(2)___;// 调用无参构造函数生成由 p1指向的动态对象___(3)___;// 调用带参构造函数生成由 p2指向的动态对象,// 使a和b成员分别被初始化为 4和5}(1)(2)(3)四、理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。(每小题6分,共30分)13#include<iomanip.h>constintM=20;voidmain(){intc2,c3,c5;c2=c3=c5=0;for(inti=1;i<=M;i++){if(i%2==0)c2++;if(i%3==0)c3++;if(i%5==0)c5++;}cout<<c2<<''<<c3<<''<<c5<<endl;}运行结果:#include<iostream.h>#include<string.h>classCD{char*a;intb;public:voidInit(char*aa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa);b=bb;}char*Geta(){returna;}intGetb(){returnb;}voidOutput(){cout<<a<<''<<b<<endl;}};voidmain(){CDdx,dy;dx.Init("abcdef",30);dy.Init("shenyafen",3*dx.Getb()+5);dx.Output();dy.Output();}运行结果:143.#include<iostream.h>classBase{public:Base(inti,intj){x0=i;y0=j;}voidMove(intx,inty){x0+=x;y0+=y;}voidShow(){cout<<"Base("<<x0<<","<<y0<<")"<<endl;}protected:intx0,y0;};classDerived:publicBase{public:Derived(inti,intj,intm,intn):Base(i,j){x=m;y=n;}voidShow(){cout<<"Next("<<x+x0<<","<<y+y0<<")"<<endl;}private:intx,y;};voidmain(){Baseb(1,2);b.Show();Derivedd(3,4,10,15);d.Move(5,6);d.Show();}运行结果:#include<iostream.h>voidmain(){inti,s=0;intN;cout<<"输入一个正整数:";cin>>N;for(i=1;i<=N;i++)s+=i*i;cout<<s<<endl;}15程序功能:intf(constchar*s){inti=0;while(*s++)i++;returni;};程序功能:五、编程题(每小题 5分,共10分)1. 根据下面函数原型编写一个函数,求出并返回由字符指针 a所指向的字符串中包含的字符’a’和’A’的总个数。intfun(char*a);根据下面类中拷贝构造函数的原型写出它的类外定义。classArray{int*a; // 指向动态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论