电子科技大学《C++》自测题.docx

上传人:b****8 文档编号:10019979 上传时间:2023-02-08 格式:DOCX 页数:25 大小:22.70KB
下载 相关 举报
电子科技大学《C++》自测题.docx_第1页
第1页 / 共25页
电子科技大学《C++》自测题.docx_第2页
第2页 / 共25页
电子科技大学《C++》自测题.docx_第3页
第3页 / 共25页
电子科技大学《C++》自测题.docx_第4页
第4页 / 共25页
电子科技大学《C++》自测题.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

电子科技大学《C++》自测题.docx

《电子科技大学《C++》自测题.docx》由会员分享,可在线阅读,更多相关《电子科技大学《C++》自测题.docx(25页珍藏版)》请在冰豆网上搜索。

电子科技大学《C++》自测题.docx

电子科技大学《C++》自测题

网络复习题一

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码分别填在题干的括号内。

每小题1分,共15分)

1.cin是

(2)类的标准对象的引用。

①ostream②istream③stdout④stdin

2.无名类就是没有

(1)的类。

①类名②任何成员③数据成员④成员函数

3.说明虚函数的关键字为

(2)。

①inline②virtual③static④define

4.若有floatf=6.8;inti=(int)f;则i的值为(6);

①6②7③6.8④不确定

5.用成员函数重载一元运算符θ,则显示调用方式为(3)。

①objθ②θobj③obj.operatorθ()④operatorθ(obj)

6.以下

(2)没有返回类型,但又有return语句。

①析构函数②类类型转换函数③运算符重载函数④构造函数

7.无名类最多可以定义

(2)个对象。

10②1③2④任意多

8.C++利用(4)实现类属。

①函数重载②继承③封装④模板

9.以下(4)是一个类的所有对象共享的。

1私有段数据成员②公有段数据成员③保护段数据成员④静态数据成员

10.若有floatf=1.8;inti=(int)f;则f的值为(3);

①1②2③1.8④不确定

11.说明内联函数的关键字为

(1)。

1inline②virtual③static④define

12.关于虚函数,(3)不正确。

1析构函数可以是虚函数②构造函数不可以是虚函数

③虚函数是类的私有成员函数④虚函数是类的公有成员函数

13.根类的成员可以有(4)种不同的被访问的权限。

①1②2③3④4

14.cout是

(1)类的标准对象的引用。

①ostream②istream③stdout④stdin

15.空类就是没有

(2)的类。

①类名②任何成员③数据成员④成员函数

二、多项选择题(在每小题的五个备选答案中,选出二个至五个正确的答案,并将其号码分别填在题干的括号内,多选、少选、错选,均无分。

每小题2分,共10分)

1.CRC方法从(125)方面来表述对象。

①对象取名②责任③友元④共享⑤合作者

2.以下(1245)的重载能被派生类继承。

①*②+③=④--⑤[]

3.区分同名函数,(1235)是早期匹配。

1根据参数表②根据类名③根据不同类的对象④虚函数⑤根据不同类对象的指针

4.以下(2345)是正确的强制类型转换方式。

①type表达式②(type)表达式③type(表达式)④(type)(表达式)⑤(type表达式)

5.一个类的友元可以是(2345)。

①自己类的成员函数②在该类中定义的友元函数③另一个类的所有成员函数④另一个类的某个成员函数⑤该类的友元类

三、名词解释(共10分)

1.对象

一组数据及对该组数据的操作封装而成的实体。

2.多态性

一个名字(或符号)有多种含义。

3.引用

存储单元(或变量)的别名。

四、判断分析题(判断正误,将正确的划上“√”,错误的划上“×”,并简述理由。

共15分)

1.无论是公有派生或私有派生,都可以将派生类对象当作基类对象使用。

(×)

只有公有派生情况下,可以将派生类对象当作基类对象使用。

2.一个类的对象具有该类定义的所有数据成员的副本。

(×)

一个类的对象具有该类定义的所有非static数据成员的副本。

3.基类的公有成员函数在派生类中仍然是公有成员函数。

(×)

基类的公有成员函数在公有派生类中仍然是公有成员函数

4.new和delete可以在一个类的内部进行重载,也可以在任何类外进行重载。

(√)

五、读程序,得结果(每小题5分,共10分)

1.#include“iostream.h”

classA

{

public:

A(){cout<<“Aiscreated\n”;}

};

classB:

virtualpublicA

{public:

B(){cout<<“Biscreated\n”;}

};

classC:

virtualpublicA,publicB

{

public:

C(){cout<<“Ciscreated\n”;}

};

main()

{

BobjB;

CobjC;

}

答案

Aiscreated

Biscreated

Aiscreated

Biscreated

Ciscreated

 

2.#include“iostream.h”

classA

{

inta;

public:

voidset(intx=0){a=x;}

voidput(){cout<

voidfunc()

{

AobjA1;

objA1.set(20);

set(30);

put();

objA1.put();

put();

}

};

main()

{

AobjA;

objA.set(10);

objA.put();

objA.func();

objA.put();

}

答案

10

30

20

30

30

 

六、指出下列程序的错误;说明错误的原因;并改正(每小题5分,共10分)

1.#include“iostream.h”

classX

{

public:

intx;

X(inta){x=a;}

};

classY:

X

{

public:

inty;

Y(intb)//错误,派生类构造函数必须先初始化基类对象。

{

y=b;

}

};

main()

{

XobjX=1;

YobjY=2;

}

答案

改正:

Y(intb):

X(10)

{

y=b;

}

2.#include“iostream.h”

classA

{

inta=1;//错误不能初始化

staticintb=3;//错误不能初始化

};

main()

{

AobjA;

A:

:

b=2;//错误类外访问私有成员

cout<

:

b;//错误类外访问私有成员

}

改正:

#include“iostream.h”

classA

{

public:

inta;

staticintb;

};

intA:

:

b=10;

main()

{

AobjA;

A:

:

b=2;

cout<

:

b;

}

七、编程题(每小题15分,共30分)

1.实现一个Point类(数据成员为一个点在两维直角坐标系内的坐标);实现一个Vector类(数据成员为一个点在两维极坐标系内的坐标);要求两个类的对象能互相赋值。

#include

#include

constdoublePI=3.14;

classVector;

classPoint{friendVector;

intx;inty;

public:

Point(intinitx=0,intinity=0)

{x=initx;y=inity;}

operatorVector();

};

classVector{friendPoint;

doublep;doubleseta;

public:

Vector(doubleinitp=0,doubleinitseta=0)

{p=initp;seta=initseta;}

operatorPoint();

};

Vector:

:

operatorPoint()

{PointPobj;

Pobj.x=p*cos(seta);

Pobj.y=p*sin(seta);

returnPobj;}

Point:

:

operatorVector()

{VectorVobj;

Vobj.p=sqrt(x*x+y*y);

Vobj.seta=actan(y/x);

returnPobj…}

2.实现一个Point类(数据成员为一个点在两维直角坐标系内的坐标);派生一个圆Circle类;能求圆面积,能够画圆。

classPoint{

protected:

intx;inty;

public:

Point(intinitx=0,intinity=0)

{x=initx;y=inity;}

};

classCircle:

Point{

floatr;

public:

Circle(intx1,inty1,floatr1):

Point(x1,y1)

{r=r1;}

floatarea()

{retuen3.14*r*r;}

voidshow_circle()

{circle(x,y,r);}

};

网络复习题二

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码分别填在题干的括号内。

每小题1分,共12分)

1.若在类外有函数调用X:

:

func();则函数func是类X的

(2)函数。

①私有静态成员函数②公有非静态成员函数③公有静态成员函数④友元函数

2.说明内联函数的关键字为(4)。

1virtual②static③enum④inline

3.(3)不是面向对象语言的核心概念

①继承②多态性③类属④封装

4.友元函数没有

(1)。

1this指针②返回类型③函数名④参数

5.说明友元函数的关键字为(3)。

①inline②virtual③friend④define

6.若有Xobj[100];(X为类名),则调用构造函数的次数为(3)次。

①0②1③100④任意

7.说明静态成员函数的关键字为

(2)。

2virtual②static③enum④inline

8.若在类外有函数调用objX.func();则函数func是类X的

(2)函数。

1私有成员函数②公有非静态成员函数③公有静态成员函数④友元函数

9.派生类的成员可以有(4)种不同的被访问的权限。

①1②2③3④4

10.复制初始化构造函数对参数的要求是(3)。

①无特殊要求②指向对象的指针③自己类对象的常引用④对象

11.根类的成员可以有(3)种不同的被访问的权限。

①1②2③3④4

12.以下

(2)没有返回类型,但又有return语句。

①析构函数②类类型转换函数③运算符重载函数④构造函数

二、多项选择题(在每小题的五个备选答案中,选出二个至五个正确的答案,并将其号码分别填在题干的括号内,多选、少选、错选,均无分。

每小题2分,共10分)

1.面向对象的核心概念为(123)。

①数据封装②继承③多态性④模板⑤引用

2.以下(124)可以定义类类型。

①class②union③type④struct⑤define

3.简单成员函数是指声明中不含(234)的函数。

①void②static③volatile④const⑤()

4.可以访问一个类的对象的私有成员的有(123)。

①该类的static成员函数②该类的非static成员函数

③该类的友元函数④main函数⑤该类的派生类的所有成员函数

5.(23)没有参数。

①构造函数②析构函数③类类型转换函数④静态成员函数⑤友元函数

三、名词解释(共10分)

4.对象

一组数据及对该组数据的操作封装而成的实体。

5.多态性

一个名字(或符号)有多种含义。

6.类型转换:

一种类型的值转换为另一种类型的值

四、判断分析题(判断正误,将正确的划上“√”,错误的划上“×”,并简述理由。

共16分)

5.基类的公有成员函数在派生类中仍然是公有成员函数。

(×)

基类的公有成员函数在公有派生类中仍然是公有成员函数。

6.static公有数据在类外的访问方式为:

对象.static公有数据。

(×)

static公有数据在类外的访问方式为:

类名:

static公有数据。

7.无论是公有派生或私有派生,都可以将派生类对象当作基类对象使用。

(×)

只有公有派生时,可以将派生类对象当作基类对象使用。

(×)

8.指针悬挂有害处。

(√)

五、读程序,得结果(每小题6分,共12分)

1.#include

classA

{

inta;

public:

A(intx=0){a=x;}

voidput(){cout<

voidset1(intx,Aobj){obj.a=x;}

voidset2(intx,A&obj){obj.a=x;}

};

main()

{

AobjA

(1);

objA.put();

objA.set1(2,objA);

objA.put();

objA.set2(3,objA);

objA.put();

}

答案:

1

1

3

 

2.#include“iostream.h”

classA

{

public:

A(){cout<<“A()\n”;}

};

classB:

publicA

{public:

B(){cout<<“B()\n”;}

};

classC:

publicB

{

public:

C(){cout<<“C()\n”;}

};

voidmain()

{

CobjC;

}

答案:

A()

B()

C()

六、指出下列程序的错误;说明错误的原因;并改正

#include“iostream.h”

classA

{

inta;

staticints;

public:

A(intx){a=x;}

voidset(){a=1;s=2;;}

voidput(){cout<

};

main()

{

AobjA(10);

objA.put();

}

没有定义static成员

改正:

#include“iostream.h”

classA

{

inta;

staticints;

public:

A(intx){a=x;}

voidset(){a=1;s=2;;}

voidput(){cout<

};

intA:

:

s;

main()

{

AobjA(10);

objA.put();

}

七、编程题(每小题15分,共30分)

3.实现一个动态数组Array类,基类型为整型;要求在构造函数中用new初始化数组的大小;在析构函数中用delete释放数组空间;超载运算符[],使得对象可以直接当作数组使用。

classArray

{

int*p;

intsize;

public:

Array(intn)

{p=newint[size=n];}

~Array()

{delete[]p;}

int&operator[](intidx)

{

if(idx

returnp[idx];

else

{

append(idx-size+1);

returnp[idx];

}

}

voidappend(offset)

{

intnum;

int*p1=newint[size+offset];

for(num=0;num

p1[num]=p[num];

deletep;

p=p1;

size=size+offset;

}

};

 

4.定义一个复数类Complex,要求复数类重载“*”(成员函数)和“++”(友元函数)。

classComplex

{

protected:

floata,b;

public:

Complexoperator*(Complexc)

{

Complext;

t.a=a*c.a-.b*c.b;

t.b=a*c.b+b*c.a;

returnt;

}

friendComplexoperator++(Complex&c)

{

c.a++

c.b++

returnc;

}

};

网络复习题三

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码分别填在题干的括号内。

每小题1分,共12分)

1.若在类外有函数调用X:

:

func();则函数func是类X的

(2)函数。

①私有静态成员函数②公有非静态成员函数③公有静态成员函数④友元函数

2.说明内联函数的关键字为(4)。

3virtual②static③enum④inline

3.(3)不是面向对象语言的核心概念

①继承②多态性③类属④封装

4.友元函数没有

(1)。

2this指针②返回类型③函数名④参数

5.说明友元函数的关键字为(3)。

①inline②virtual③friend④define

6.若有Xobj[10];(X为类名),则调用构造函数的次数为(3)次。

①0②1③10④任意

7.说明静态成员函数的关键字为

(2)。

4virtual②static③enum④inline

8.若在类外有函数调用objX.func();则函数func是类X的

(2)函数。

2私有成员函数②公有非静态成员函数③公有静态成员函数④友元函数

9.派生类的成员可以有(4)种不同的被访问的权限。

①1②2③3④4

10.复制初始化构造函数对参数的要求是(3)。

①无特殊要求②指向对象的指针③自己类对象的常引用④对象

11.根类的成员可以有(3)种不同的被访问的权限。

①1②2③3④4

12.以下

(2)没有返回类型,但又有return语句。

①析构函数②类类型转换函数③运算符重载函数④构造函数

二、多项选择题(在每小题的五个备选答案中,选出二个至五个正确的答案,并将其号码分别填在题干的括号内,多选、少选、错选,均无分。

每小题2分,共10分)

1.面向对象的核心概念为(123)。

①数据封装②继承③多态性④模板⑤引用

2.以下(124)可以定义类类型。

①class②union③type④struct⑤define

3.简单成员函数是指声明中不含(234)的函数。

①void②static③volatile④const⑤()

4.可以访问一个类的对象的私有成员的有(123)。

①该类的static成员函数②该类的非static成员函数

③该类的友元函数④main函数⑤该类的派生类的所有成员函数

5.(23)没有参数。

①构造函数②析构函数③类类型转换函数④静态成员函数⑤友元函数

三、名词解释(共10分)

7.类型转换:

一种类型的值转换为另一种类型的值

对象:

一组数据及对该组数据的操作封装而成的实体。

8.抽象类:

包含有至少一个纯虚函数的类。

四、判断分析题(判断正误,将正确的划上“√”,错误的划上“×”,并简述理由。

共16分)

9.基类的公有成员函数在派生类中仍然是公有成员函数。

(×)

基类的公有成员函数在公有派生类中仍然是公有成员函数。

10.static成员的初始化必须在类外进行。

(4分)(√)

11.C++语言中的任何函数都必须函数体,即函数的实现。

(3分)(×)

纯虚函数就可以没有函数体。

12.this指针在类的所有成员函数中都隐含存在。

(4分)(×)

this指针在类的所有成员非static函数中都隐含存在。

五、读程序,得结果(每小题6分,共12分)

1.#include

classA

{

inta;

public:

A(intx=0){a=x;}

voidput(){cout<

voidset1(intx,Aobj){obj.a=x;}

voidset2(intx,A&obj){obj.a=x;}

};

main()

{

AobjA(10);

objA.put();

objA.set2(20,objA);

objA.put();

objA.set1(30,objA);

objA.put();

}

答案:

10

20

20

2.#include“iostream.h”

classA

{

public:

A(){cout<<“A()\n”;}

};

classB:

publicA

{public:

B(){cout<<“B()\n”;}

};

classC:

publicB

{

public:

C(){cout<<“C()\n”;}

};

voidmain()

{

BobjB;

CobjC;

}

A()

B()

A()

B()

C()

六、指出下列程序的错误;说明错误的原因;并改正(每小题5分,共10分)

1.#include“iostream.h”

intfunc_name(int&x)

{

returnx;

}

main()

{

inty=1;

func_name(y)=100;

cout<

}

错误:

func_name(y)=100;函数调用不能被赋值

改正:

将函数的返回改为引用

 

2.#include

classA

{

inta;

public:

A(intx){a=x;}

voidset_a(intx=0){a=x;}

voidput(){cout<<”A”<<”a”;}

};

classB:

A

{

inta,b;

public:

B(intx,inty)

{

a=x;b=y;

}

};

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1