【MOOC】《面向对象程序设计C++》(东北大学)中国大学慕课答案_第1页
【MOOC】《面向对象程序设计C++》(东北大学)中国大学慕课答案_第2页
【MOOC】《面向对象程序设计C++》(东北大学)中国大学慕课答案_第3页
【MOOC】《面向对象程序设计C++》(东北大学)中国大学慕课答案_第4页
【MOOC】《面向对象程序设计C++》(东北大学)中国大学慕课答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

【MOOC】《面向对象程序设计C++》(东北大学)中国大学慕课答案

有些题目顺序不一致,下载后按键盘ctrl+F进行搜索第2章C++简单程序设计第1-2章测试1.单选题:C++程序从上机到得到结果的一般操作步骤依次为()

选项:

A、编辑、编译、链接、运行

B、编译、编辑、链接、运行

C、编译、编辑、运行、链接

D、编辑、链接、编译、运行

答案:【编辑、编译、链接、运行】2.单选题:下面的程序为死循环的是()

选项:

A、for(inti=0;i<100;){i++;}

B、inti=100;while(i){i--;}

C、inti=100;for(;i;i--);

D、inti=0;do{i=10;}while(i>=0);

答案:【inti=0;do{i=10;}while(i>=0);】3.单选题:逗号表达式(x=2*3,x=x*5),x+25的值为()

选项:

A、25

B、55

C、100

D、45

答案:【55】4.单选题:以下都是C++语言标识符的一组是()

选项:

A、dsfa,df4,f$

B、huhj,a^,k2

C、3k,h,j_9

D、_ok,jk,k8

答案:【_ok,jk,k8】5.单选题:假设定义了:enumcolor{red=1,orange,yellow,green,blue,purple,black};则blue的值是()

选项:

A、4

B、5

C、3

D、6

答案:【5】第4章类与对象第3-4章测试1.单选题:关于类和对象,错误的说法是()

选项:

A、类是一种类型,它封装了数据和操作

B、对象是类的实例

C、一个类的对象只有一个

D、一个对象必属于某个类

答案:【一个类的对象只有一个】2.单选题:在类Circle的声明体外定义成员函数floatarea()时,函数头为()

选项:

A、floatCircle::area()

B、floatCircle:area()

C、Circle::area()

D、Circle::floatarea()

答案:【floatCircle::area()】3.单选题:下面有关析构函数特征的描述中,正确的是()

选项:

A、析构函数名与类名完全相同

B、析构函数可以是重载函数

C、析构函数可以有多个参数

D、析构函数不能指定返回类型

答案:【析构函数不能指定返回类型】4.单选题:下面对构造函数的不正确描述是()

选项:

A、系统可以提供默认的构造函数

B、构造函数可以有形式参数和返回值

C、构造函数可以重载

D、构造函数可以设置默认形参值

答案:【构造函数可以有形式参数和返回值】5.单选题:在C++中,结构体与类的不同点为()

选项:

A、结构体不能有成员函数

B、结构体不能继承

C、默认的访问权限不同

D、结构体不能有数据成员

答案:【默认的访问权限不同】6.单选题:设有函数原型:voidcalculate(inta,intb=5,charc='a');则下面函数调用中不正确的是()

选项:

A、calculate(3);

B、calculate(3,7);

C、calculate(3,'x');

D、calculate(1,2,'*');

答案:【calculate(3,'x');】[vk-content]第5章数据的共享与保护第5章测试1.单选题:下面关于友元函数描述正确的是()

选项:

A、友元函数破坏了类的封装性和隐藏性

B、友元函数不能访问类的私有成员

C、友元函数的实现必须在类的内部定义

D、友元函数是类的成员

答案:【友元函数破坏了类的封装性和隐藏性】2.单选题:下面生存期与程序的运行期相同的是()

选项:

A、函数的形参

B、静态局部变量

C、局部变量

D、auto变量

答案:【静态局部变量】3.单选题:下列关于常成员的描述中,错误的是()

选项:

A、常成员是用关键字const说明的

B、常成员有常数据成员和常成员函数两种

C、常数据成员的初始化是在类体内定义它时进行的

D、常数据成员的值是不可以改变的

答案:【常数据成员的初始化是在类体内定义它时进行的】4.单选题:下列说法中正确的是()

选项:

A、函数内定义的静态变量是全局变量

B、函数参数是全局变量

C、全局变量具有静态生存期

D、主函数里定义的变量是全局变量

答案:【全局变量具有静态生存期】5.单选题:声明友元函数时,友元函数的原型在类声明体中的位置()

选项:

A、只能在private后面

B、只能在public后面

C、只能在protected后面

D、可以在任意位置

答案:【可以在任意位置】6.单选题:关于静态成员,下面说法正确的是()

选项:

A、每个对象中都有一份静态数据成员的拷贝

B、只能通过对象名来访问静态成员

C、静态数据成员在类外定义和初始化

D、静态成员函数可以访问类中的任意数据成员

答案:【静态数据成员在类外定义和初始化】7.单选题:C++编译系统不能根据下面哪一项分辨重载函数()

选项:

A、const

B、返回类型

C、参数个数

D、参数类型

答案:【返回类型】第6章数组作业11.定义一个整形数集合类Set,请通过创建动态分配的整数数组(使用new运算符)存放整数值,且数组的大小要能够根据包含元素的个数动态的变化。集合中,元素的顺序无关紧要,每个元素至多出现一次。实现如下函数:(1)构造函数创建一个空集;(2)复制构造函数实现深复制;(3)add函数向集合中插入一个整数;(4)析构函数。在main函数中对上述函数进行测试。

正确写出普通构造函数、实现深复制的复制构造函数、析构函数和add函数,可得4分,有错误的可酌情减分;4个成员函数只能正确写出3个的,可得3分;只能正确写出2个成员函数,可得2分;只能正确写出1个成员函数,可得1分。主函数中创建Set类对象,并调用所有成员函数,可得2分;创建了Set类对象,但是对成员函数的调用不正确或者只调用一部分成员函数,可得1分。数据成员正确声明。参考代码:#include<iostream>usingnamespacestd;classSet{private:int*elements;//存储集合元素的动态数组intsize;//集合中元素的数量intcapacity;//数组的容量//辅助函数:扩展数组容量voidresize(){capacity*=2;int*newElements=newint[capacity];for(inti=0;i<size;++i){newElements[i]=elements[i];}delete[]elements;elements=newElements;}public://构造函数:创建一个空集Set():size(0),capacity(1){elements=newint[capacity];}//复制构造函数:实现深复制Set(constSet&other):size(other.size),capacity(other.capacity){elements=newint[capacity];for(inti=0;i<size;++i){elements[i]=other.elements[i];}}//析构函数~Set(){delete[]elements;}//add函数:向集合中插入一个整数voidadd(intvalue){for(inti=0;i<size;++i){if(elements[i]==value){return;//元素已存在,不插入}}if(size==capacity){resize();}elements[size++]=value;}};intmain(){Sets1;s1.add(1);s1.add(2);s1.add(3);Sets2=s1;s2.add(4);return0;}2.读下面的程序,写出输出结果。#includeclassApple{public:Apple(){i=10;}voiddisplay(){cout<<"Apple:i="<

答案:Apple:i=10print1:A=11print2:A=9Apple:i=10按顺序每正确写出1行输出结果,可得1分,全部正确可得4分。顺序错误的,按照相对顺序正确的结果数量给分。参考代码:#include<iostream>usingnamespacestd;classApple{public:Apple(){i=10;}voiddisplay(){cout<<"Apple:i="<<i<<endl;}private:inti;};intmain(){Applea;a.display();intA=11;cout<<"print1:A="<<A<<endl;A=9;cout<<"print2:A="<<A<<endl;a.display();return0;}3.定义一个Tree(树)类,具有带形参的构造函数,有整型数据成员ages(树龄),成员函数grow(intyears)对ages加上years,age()显示Tree类对象的ages值。编写主函数对该类进行测试。

写出完整的类声明体,能够完整写出构造函数、age函数和grow函数,可得4分,有错误可酌情减分;数据成员正确声明,但是只能正确写出其中2个成员函数,可得3分;只能写出1个成员函数,可得2分;只写出数据成员声明,不能写出成员函数的实现,可得1分。主函数正确,可得1分。参考答案:#include<iostream>usingnamespacestd;classTree{private:intages;//存储树的树龄public://构造函数,接收一个参数初始化树龄Tree(intinitAge):ages(initAge){}//grow函数,增加树龄voidgrow(intyears){ages+=years;}//age函数,显示树的树龄voidage(){cout<<"Theageofthetreeis:"<<ages<<endl;}};intmain(){TreemyTree(5);//创建一个树龄为5的Tree对象myTree.age();//显示树的初始树龄myTree.grow(3);//让树生长3年myTree.age();//显示树生长后的树龄return0;}第6章测试1.单选题:以下有关字符数组的用法正确的是()

选项:

A、chars[]="abc";

B、chars[3]="abc";

C、chars[4];s="abc";

D、chars[4]=’abc’;

答案:【chars[]="abc";】2.单选题:关于虚基类,下列描述正确的是()

选项:

A、虚基类用于解决浅复制的问题

B、虚基类用于解决访问二义性的问题

C、虚基类不能解决派生类继承得到的同一基类成员的多份拷贝问题

D、实例化对象时,所有派生类的构造函数都会调用虚基类的构造函数

答案:【虚基类用于解决访问二义性的问题】3.单选题:执行完下面的语句后,欲删除整个数组,最适当的方法是()float*pointer=newfloat[10];

选项:

A、delete*pointer;

B、delete[]pointer;

C、deletepointer[];

D、delete&pointer;

答案:【delete[]pointer;】4.单选题:执行下列语句之后,正确的是()floatm=100,n=200;float&refer_m=m,&refer_n=n;

选项:

A、&refer_m=n;

B、*refer_m=*refer_n;

C、refer_m=refer_n;

D、&refer_m=&refer_n;

答案:【refer_m=refer_n;】5.单选题:定义如下数组:intx[3][3]={1,2,3,4,5,6,7,8,9};则x[1][1]的值是()

选项:

A、5

B、1

C、4

D、7

答案:【5】6.单选题:若有定义:inta=100,*p=&a;,则下列说法错误的是()

选项:

A、变量p的值为100

B、变量p经初始化,获得变量a的地址

C、变量p只可以指向整型变量

D、声明变量p,其中*表示p是一个指针变量

答案:【变量p的值为100】第8章多态性第7-8章测试1.单选题:赋值兼容规则不包括的情形是()

选项:

A、派生类的对象可以隐含转换为基类对象

B、派生类对象可以初始化基类的引用

C、派生类的指针可以用来调用派生类的成员函数

D、派生类的指针可以隐含转换为基类的指针

答案:【派生类的指针可以用来调用派生类的成员函数】2.单选题:假设Shape为抽象类,则下面哪种用法是错误的()

选项:

A、Shape*s;

B、voidfunction(Shape*s);

C、voidfunction(Shape&s);

D、Shapes;

答案:【Shapes;】3.单选题:已知可以用d_obj.bm访问派生类对象d_obj中的基类成员bm,则bm为()

选项:

A、私有继承的公有成员

B、公有继承的私有成员

C、公有继承的公有成员

D、公有继承的保护成员

答案:【公有继承的公有成员】4.单选题:下列关于抽象类的描述中,正确的是()

选项:

A、可以创建抽象类对象

B、抽象类中的纯虚函数需要实现

C、抽象类是只有纯虚函数的类

D、抽象类指针可以指向不同的派生类对象

答案:【抽象类指针可以指向不同的派生类对象】5.单选题:下面选项中不属于面向对象程序设计特征的是()

选项:

A、继承性

B、相似性

C、多态性

D、封装性

答案:【相似性】6.单选题:Point为一个类,下面的友元运算符重载函数原型中,正确的是()

选项:

A、friendfloatoperator+(float);

B、friendPointoperator+(floatx,floaty);

C、friendPointoperator+(float,float);

D、friendPoint&operator+(Point,float);

答案:【friendPoint&operator+(Point,float);】7.单选题:下列关于运算符重载的描述中,正确的是()

选项:

A、双目运算符只能重载为类的成员函数

B、前置++和后置++运算符重载为成员函数时都没有参数

C、可以把双目运算符重载成单目运算符

D、不能重载条件运算符“?:”

答案:【不能重载条件运算符“?:”】8.单选题:某成员函数在基类中的访问属性为public,经过保护派生后,其在派生类的访问属性为()

选项:

A、private

B、protected

C、public

D、friend

答案:【protected】作业21.定义一个抽象类Memo,成员数据包括:(1)时间begin_time,为string类对象;(2)地点place,string类对象;(3)内容content,string类对象。从Memo派生出两个类:Meeting和Interview。Meeting中还包括结束时间end_time,为string类对象。Interview还包括被访问人interviewee,为string类对象。这几个类都有成员函数show()来显示各数据成员的值。分别设计这三个类,并在主函数中进行测试,实现多态性。

写出类Memo、Meeting和Interview的完整类声明,可得3分,有错误可酌情减分;只写出2个类声明,得2分;只能写出一个类声明,可得1分。在两个派生类中均正确实现show函数,得2分,只写出一个的得1分。主函数中正确声明各类对象,并正确调用所有成员函数,可得2分;对某些成员函数调用不正确或者没有调用所有成员函数,可得1分。继承关系正确。定义纯虚函数。参考答案:#include<iostream>#include<string>usingnamespacestd;classMemo{protected:stringbegin_time;stringplace;stringcontent;public:Memo(conststring&bt,conststring&p,conststring&c):begin_time(bt),place(p),content(c){}virtualvoidshow()=0;//纯虚函数};classMeeting:publicMemo{private:stringend_time;public:Meeting(conststring&bt,conststring&p,conststring&c,conststring&et):Memo(bt,p,c),end_time(et){}voidshow()override{cout<<"BeginTime:"<<begin_time<<endl;cout<<"Place:"<<place<<endl;cout<<"Content:"<<content<<endl;cout<<"EndTime:"<<end_time<<endl;}};classInterview:publicMemo{private:stringinterviewee;public:Interview(conststring&bt,conststring&p,conststring&c,conststring&iv):Memo(bt,p,c),interviewee(iv){}voidshow()override{cout<<"BeginTime:"<<begin_time<<endl;cout<<"Place:"<<place<<endl;cout<<"Content:"<<content<<endl;cout<<"Interviewee:"<<interviewee<<endl;}};intmain(){Memo*memo1=newMeeting("9:00","ConferenceRoom1","ProjectDiscussion","10:00");Memo*memo2=newInterview("14:00","Office2","JobInterview","JohnDoe");memo1->show();memo2->show();deletememo1;deletememo2;return0;}2.设计一个钟表类Clock,具有hour、minute和second三个私有数据成员,具有相应的构造函数和设置时间的函数setTime和显示时间的函数showTime。重载运算符”>”和”<”为成员函数,以实现比较两个钟表对象时间的大小(时间早的定义为小),请编写主函数进行测试。

写出完整的类声明,正确写出重载运算符“<”、重载运算符“>”、构造函数成员函数showTIme和setTime,可得5分,有错误可酌情减分;类定义其他部分完整,但是只能写出一个重载运算符函数的,可得4分;类定义其他部分完整,但是不能正确写出所有重载运算符函数的,可得3分;不能写出2个重载运算符函数,而且类定义中构造函数或者其他两个成员函数不完整的,可得2分;只能写出一个成员函数的,可得1分。主函数正确,创建Clock类对象,并正确调用所有成员函数,得2分;创建了Clock类对象,但是对成员函数的调用不正确,或者没有调用所有的成员函数,得1分。参考答案:#include<iostream>usingnamespacestd;classClock{private:inthour;intminute;intsecond;public://构造函数Clock(inth=0,intm=0,ints=0):hour(h),minute(m),second(s){}//设置时间的函数voidsetTime(inth,intm,ints){hour=h;minute=m;second=s;}//显示时间的函数voidshowTime(){cout<<hour<<":"<<minute<<":"<<second<<endl;}//重载大于运算符booloperator>(constClock&other)const{if(hour>other.hour){returntrue;}elseif(hour==other.hour){if(minute>other.minute){returntrue;}elseif(minute==other.minute){if(second>other.second){returntrue;}}}returnfalse;}//重载小于运算符booloperator<(constClock&other)const{if(hour<other.hour){returntrue;}elseif(hour==other.hour){if(minute<other.minute){returntrue;}elseif(minute==other.minute){if(second<other.second){returntrue;}}}returnfalse;

温馨提示

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

评论

0/150

提交评论