1、全新整理全国自考面向对象程序设计试题及答案解析全国2018年1月高等教育自学考试面向对象程序设计试题课程代码:02328一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.一个函数功能不太复杂,但要求被频繁调用,选用( )A.内联函数 B重载函数C递归函数 D嵌套函数2.C+的继承性允许派生类继承基类的( )A.部分特性,并允许增加新的特性或重定义基类的特性B部分特性,但不允许增加新的特性或重定义基类的特性C所有特性,并允许增加新的特性或重定义基类的特性D所有特性,但不允许增加新的
2、特性或重定义基类的特性3在C+中,封装是借助什么达到的?( )A结构 B类C数组 D函数4.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为( )A.自己所属类、对象成员所属类、基类的构造函数B对象成员所属类、基类、自己所属类的构造函数C基类、对象成员所属类、自己所属类的构造函数D基类、自己所属类、对象成员所属类的构造函数5.类的析构函数是对一个对象进行以下哪种操作时自动调用的?( )A.建立 B撤消C赋值 D引用6.下列不是描述类的成员函数的是( )A.构造函数 B析构函数C友元函数 D拷贝构造函数7.所有在函数中定义的变量,连同形式参数,都属于( )A.全局变量 B局部
3、变量C静态变量 D寄存器变量8.假定AB为一个类,则执行AB x;语句时将自动调用该类的( )A.有参构造函数 B无参构造函数C拷贝构造函数 D赋值构造函数9.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为( )A.x.a Bx.a()Cx-a Dx-a()10.对于任一个类,用户所能定义的构造函数的个数至多为( )A.0 B1C2 D任意个二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。11对象的四大基本特性是多态性、继承性、_和封装性。12为了使类中的成员不能被类外的函数通过成员操
4、作符访问,则应把该成员的访问权限定义为_。13C+程序的源文件扩展名为_。14所有模版都是以_关键字和一个形参表开头的。15在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是_定义的头文件。16一个const对象只能访问_成员函数。17C+是通过引用运算符_来定义一个引用的。18若y是x的引用,则对y的操作就是对_的操作。19执行_操作将释放由p所指向的动态分配的数据空间。20C+的流库预定义了4个流,它们是cin、cout、_和clog。三、改错题(本大题共2小题,每小题6分,共12分)21.假定下面程序将分数a和b相加,其和赋值给c并输出,要求输出结果为“13/18”
5、,其主函数5到8行之间存在着三行语句错误,请指出错误行的行号并改正。#includeclass Franction /定义分数类int nume; /定义分子int deno; /定义分母public:/把*this化简为最简分数,具体定义在另外文件中实现void FranSimp();/返回两个分数*this和x之和,具体定义在另外文件中实现Franction FranAdd(const Franction& x);/置分数的分子和分母分别0和1void InitFranction() nume=0; deno=1;/置分数的分子和分母分别n和dvoid InitFranction(int
6、n,int d) nume=n; deno=d;/输出一个分数void FranOutput() coutnume/denoendl;void main() /1行 /2行Franction a,b,c; /3行a.InitFranction(7,18); /4行b.InitFranction(1); /5行c.InitFranction(); /6行c=FranAdd(a,b); /7行coutc.nume/c.denoendl; /8行 /9行错误行的行号为_、_和_。分别改正为_、_和_。22下面是一个类的定义,在5到12行之间有3行存在语法错误,请指出错误行的行号并改正。class C
7、E /1行private: /2行int a,b; /3行int getmin() return (ab?a:b); /4行public /5行int c; /6行void SetValue(int x1,int x2,int x3) /7行a=x1;b=x2;c=x3; /8行; /9行int GetMin(); /10行; /11行int GetMin() /12行int d=getmin(); /13行return(dc? d:c); /14行 /15行错误行的行号为_、_和_。分别改正为_、_和_。四、程序填空题(本大题共3小题,每小题6分,共18分)请按提示要求完成以下程序段的填空。
8、23class A int a,b;public:_(1)_ /定义构造函数,使参数aa和bb的默认值为0,/在函数体中用aa初始化a,用bb初始化b;main()A *p1,*p2;_(2)_; /调用无参构造函数生成由p1指向的动态对象_(3)_; /调用带参构造函数生成由p2指向的动态对象,/使a和b成员分别被初始化为4和5(1) (2) (3)24.一种类定义如下:#include#includeclass Booksprivate:char bk_name20; /书的名称int price; /书的价格static int totalprice; /同类书总价格public:Boo
9、ks(char*str,int p) /构造函数strcpy(bk_name,str); /strcpy函数将str字符串的内容拷贝到bk_nameprice=p;totalprice+=price;Books()totalprice-=price;char*GetN()_(4)_;/返回书名称int GetP()return price;_(5)_GetTotal_Price() /定义静态成员函数_(6)_; /返回总价格;(4) (5) (6)25.已知一个类的定义如下:#includeclass AA int a10;int n;public:void SetA(int aa,int
10、nn); /用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选择排序的方法对数组a中前n个元素/进行从小到大排序void InsertA(); /采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA(); /依次输出数组a中的前n个元素;voidAA:SortA()int i,j;for(i=0; _(7)_;i+)int x=ai,k=i;for(j=i+1; jn;j+)if(ajx)x=aj;k=_(8)_;ak=ai;ai=_(9)_;(7) (8) (9)五、程序
11、分析题(本大题共6小题,每小题5分,共30分)阅读以下程序,写出其运行结果。26#includeconst int N=6;void fun();void main()for(int i=1;iN;i+)fun();void fun()static int a=2;cout(a+=3) ;27#include#includeclass funfriend ostream& operator(ostream&,fun);ff;ostream& operator(ostream& os,fun f)os.setf(ios:left);return os;void main()coutsetfill
12、(*)setw(10)12345endl;coutffsetw(10)54321endl;28#includeclass apublic:virtual void func()coutfunc in class aendl;class bpublic:virtual void func()coutfunc in class bendl;class c:public a,public bpublic:void func()coutfunc in class cendl;void main()c c;a &pa=c;b &pb=c;pa.func();pbfunc();29#includeclas
13、s testapublic:testa()a1=0;testa(int i)a1=i;void printout()couta1;private:int a1;class testb:public testapublic:testb()b1=0;testb(int i,int j,int k);void printout();private:int b1;testa aa;testb:testb(int i,int j,int k):testa(i),aa(j)b1=k;void testb:printout()testa:printout();coutendl;void main()test
14、b tt2;tt0=testb(9,3,5);tt1=testb(8,4,7);for(int i=0;i2;i+)tti.printout();30.#includevoid main()for(int i=-1;i4;i+)cout(i ? 0:*);31#includeclass Dateint Year,Month,Day;public:void SetDate(int y,int m,int d)Year=y;Month=m;Day=d;void PrintDate()coutYear/Month/Dayendl;Date()SetDate(2000,1,1);Date(int y,
15、int m,int d)SetDate(y,m,d);class Timeint Houre,Minutes,Seconds;public:void SetTime(int h,int m,int s)Houre=h;Minutes=m;Seconds=s;void PrintTime()coutHoure:Minutes:Secondsendl;Time()SetTime(0,0,0);Time(int h,int m,int s)SetTime(h,m,s);class Date_Time:public Date,public Timepublic:Date_Time():Date(),Time();Date_Time(int y,int mo,int d,int h,int mi,int s):Date(y,mo,d),Time(h,mi,s)void PrintDate_Time()PrintDate();PrintTime();void main()Date_Time dt_a,dt_b(2002,10,1,6,0,0);dt_a.PrintDate_Time();dt_b.SetTime(23,59,59);dt_b.PrintDate_Time();dt_a.SetDate(2002,12,31);dt_a.PrintDate_Time();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1