广西大学计算机语言(VC)期末复习题及答案_第1页
广西大学计算机语言(VC)期末复习题及答案_第2页
广西大学计算机语言(VC)期末复习题及答案_第3页
广西大学计算机语言(VC)期末复习题及答案_第4页
广西大学计算机语言(VC)期末复习题及答案_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

计算机语言(VC)复习题

超越高度

一.单选题(共24题,52.8分)

1应用程序对象CprogramApp是程序执行的最重要部分,()均由其完成。

A程序的初始化、运行和结束工作

B消息的发送和执行

C程序的框架、窗口

D事件的发生和处理

正确答案:A

2在VC6开发环境中,双击工作区文件,就能打开工作区及其包含的工程,其

后缀是()O

A.dsw

B.dsp

C.rc

D.clw

正确答案:A

3关于纯虚函数和抽象类的描述中,错误的是()。

A纯虚函数是一种特殊的虚函数,它没有具体实现

B抽象类是指具有纯虚函数的类

C一个基类中说明有纯虚函数,该基类的派生类一定不是抽象类

D抽象类只能作为基类使用,其纯虚函数的实现由派生类给出

正确答案:A

4所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个

实体,这实体也就是()o

A类

B对象

C函数体

D数据块

正确答案:A

5编写C++程序一般需经过的几个步骤依次是()。

A编辑、调试、编译、连接

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

C编译、调试、编辑、连接

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

正确答案:B

6在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

A作为友元函数重载的一元运算符

B作为成员函数重载的一元运算符

C作为友元函数重载的二元运算符

D作为成员函数重载的二元运算符

正确答案:B

7设有代码"structBOOK{chartitile[40];floatprice;};则下列不正确的变量定义

语句是()。

ABOOKbook;

BBOOKbook={"C++编程”,27.5};

CBOOK*x=newBOOK;

DBOOKx=newBOOK;

正确答案:D

8假设A为一个类,则执行“Aa,b(3),*p;”语句时共调用该类构造函数的次数

为()。

A2B3C4D5

正确答案:A

9下列二维数组定义,正确的是()。

Ainta[5][];

Binta[][5]

Cinta[][3]={{l,3,5},{2})

Dinta[](10)

正确答案:C

10对基类和派生类的关系描述中,错误的是()。

A派生类是基类的具体化

B基类继承了派生类的属性

C派生类是基类定义的延续

D派生类是基类的特殊化

正确答案:B

11在类中说明的成员可以使用关键字的是()。

Apublic

Bextern

Ccpu

Dregister

正确答案:A

12每个C++程序都必须包含这样一个函数,该函数的函数名为()o

Amain

BMAIN

Cname

Dfunction

正确答案:A

13决定C++语言中函数的返回值类型的是()。

Areturn语句中的表达式类型

B调用该函数时系统随机产生的类型

C调用该函数时的主调用函数类型

D在定义该函数时所指定的数据类型

正确答案:D

14在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员

一定是基类中的0O

A私有成员

B公有成员

C保护成员

D保护成员或私有成员

正确答案:A

15以下说法正确的是()o

A用户调用标准库函数前,必须重新定义

B用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C系统不允许用户重新定义标准库函数

D用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用

户源文件中

正确答案:B

16友元的作用是()。

A提高程序的运行效率

B加强类的封装性

C实现数据的隐藏性

D增强成员函数的种类

正确答案:A

17MFC主要由()组成。

A基础类库、全局函数

B基础类库、全局变量、宏

C基础类库、全局函数、宏

D基础类库、全局函数、全局变量和宏

正确答案:D

18根据对话框的行为性质,对话框可以分为两类:()o

A对话框资源和对话框类

B模式对话框和非模式对话框

C对话框资源和对话框模板

D消息对话框和模式对话框

正确答案:B

19下列关于Windows应用程序对鼠标响应的说法,正确的是()。

A只有活动窗口才能接受鼠标事件

B可以调用函数SetCapture。函数实现对鼠标的捕获,且捕获鼠标后系统的

键盘功能暂时失效。

C用户只能调用系统定义的鼠标的光标形状,不能自定义光标

D可以通过相应单一类型的鼠标消息来响应鼠标的拖动事件

正确答案:B

20通常拷贝初始化构造函数的参数是()。

A某个对象名

B某个对象成员名

C某个对象的引用名

D某个对象的指针名

正确答案:C

21下面循环语句中内层循环的循环体S的执行总次数为()。

for(inti=0;i<n;i++)

for(intj=i;j<n;j++)

S

An2B(n+l)/2Cn(n+l)/2Dn(n-l)/2

正确答案:C

22对于下面循环语句:

inti=0;

do

i++;

while(i*i<10);,其循环体被执行的次数为()。

A4B3C5D2

正确答案:A

23下列不属于成员函数的是()。

A静态成员函数

B析构函数

C友元函数

D构造函数

正确答案:C

24当消息产生时,系统调用CwinApp的()函数对消息进行解析,并发送到

相应的窗口进行处理。

ARun

BCreate

CTranslateMessage

DDispatchMessage

正确答案:A

二.填空题(共13题,28.6分)

1为解决多继承中因公共基类而产生的二义性问题,C++提供了机

制。将公共基类声明为它以后,它在派生类中只产生一个实例。

正确答案:

第一空:虚基类;

2两个函数的函数名相同,但参数的个数和类型不同,则称为o

正确答案:

第一空:函数重载

第二空:重载函数;

3每个对象都是所属类的一个o

正确答案:

第一空:实例;

4如果要把A类成员函数voidf()声明为类B的友元函数,则应在类B的定义中

加入语句;

正确答案:

第一空:friendvoidA::f();

5MFC中的集合类包括数组、映射。

正确答案:

第一空:列表;

6定义类动态对象数组时,元素只能靠自动调用该类的来进行初始

化。

正确答案:

第一空:无参构造函数;

7this指针始终指向调用成员函数的o

正确答案:

第一空:对象;

8C++中函数的参数传递一种是按值传递,另一种是__________传递。

正确答案:

第一空:地址

第二空:引用;

9C++程序的源文件扩展名为o

正确答案:

第一空:cpp;

10若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就绪

要在函数名前加上_________和类区分符。

正确答案:

第一空:类名;

11假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个

对象时,可以调用构造函数来完成此功能。

正确答案:

第一空:复制

第二空:拷贝;

12类是用户定义的类型,具有类类型的变量称为o

正确答案:

第一空:对象;

13在已经定义了整型指针p后,为了得到一个包括10个整数的数组,并让p指

向该数组,应使用语句O

正确答案:

第一空:int*p=newint[10];

三.程序分析题(共3题,6.6分)

1分析如下程序写出运行结果。

#include<iostream.h>

classAdd{

private:intx,y;

public:

Add(inta,intb){

x=a;y=b;

coutvv,调用构造函数1。,«endl;

Add(Add&p){

x=p.a;y=p.b;

coutvv调用构造函数2。,«endl;

)

〜Add(){

count"'调用析构函数'vvendl;

)

intadd(){returnx+y;}

);

voidmain(){

Addpl(2,3);

Addp2(pl);

cout«p2.add()«endl;

)

正确答案:

运行结果:

调用构造函数1。

调用构造函数2。

5调用析构函数。

调用析构函数。

2分析如下程序写出运行结果。

#include<iostream.h>

classB{

private:a,b;

public:

B(){}

B(intx,inty){a=x;b=y;}

voidprintb(void){cout«na=n«a«nb=n«b«endl;}

clasA{

private:Bc;

public:

A(){}

A(intx,inty):c(x,y){}

voidprinta(void){c.printb();}

);

voidmain()

(

Am(7,9);

m.printa();

)

正确答案:

运行结果:

a=7,b=9

3运行结果:

调用构造函数1。

调用构造函数2。

5调用析构函数。

调用析构函数。

正确答案:

运行结果:

classB:1classA:hello

四.程序填空(共3题,6.6分)

1输入10个整数,用冒泡排序法按从小打大的顺序排序,并输出排序结果。

程序如下:

#include<iostream.h>

voidmain(){

inti,j,temp,*pt;

int*Pn=(1)int[10];

for(i=l;i<=10;i++){

cout«"Pleaseenteranumber:"«endl;

cin»*(Pn+i);

)

for(i=l;i<=10;i++)

for0=1;(2);j++)

if(*(⑶))>*(Pn+j+l){

temp=*(Pn+j);

*(Pn+j)=*(Pn+j+l);

*(Pn+j+l)=(4)

)

for(i=l;i<10;i++)

cout«*(Pn+i)«nn;

)

正确答案:

答案:

(1)new

⑵j<=10-i

⑶Pn+j

(4)temp

2classA{

int*a;

public:

A(intx=0){

a=(1);〃用x初始化a所指向的对象

)

-A(){(2);}//释放动态存储空间

正确答案:

(1)newint(x)

(2)deletea;

3打印100以内的所有素数(所谓素数是指只能被1和本身整除的正整数。)

#include<iostream.h>

#include<math.h>

voidmain()

(

inti,n;

for(n=2;n<100;n++){

inttemp=int(sqrt(n));#求n的平方根

for(i=2;(1);i++)

if((2))break;

if(i>temp)

cout«n«*

)

cout«,\n,;

正确答案:

答案:

(1)i<=temp

⑵n%i==O五.编程题(共2题,5.4分)

1已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle

类,二者都有GetPerim。函数计算对象的周长,并编写测试main。函数。

classShape

{public:

Shape(){}

~Shape(){)

virtualfloatGetPerim()=O;

)

正确答案:

程序如下:

classRectangle:publicShape

(

public:

Rectangle(floati,floatj):L(i),W(j){}〜Rectangle。{}

floatGetPerimO

(

return2*(L+W);

)

private:

floatL,W;

);

classCircle:publicShape

public:

Circle(floatr):R(r){}

floatGetPerimO

return3.14*2*R;

)

private:

floatR;

);

voidmain()

(

Shape*sp;

sp=newCircle(lO);

cout«sp->GetPerim()«endl;

sp=newRectangle(6,4);

cout«sp->GetPerim()«endl;

)

22、求n(n=3)个学生的最高分和最低分及姓名,下面已经给出student类声明和

main函数,请写出下面的student类的实现部分的三个函数:student(char

na,„intd),*getname(),compare(student&s1,student&s2)o

#include<iostream.h>#include<string.h>

classstudent

(

charname,10,;

intdeg;

public:

student(charna„=,M,,intd=0);

char*getname();

friendintcompare(student&sl,student&s2);

intgetdegO;

);

voidmain()

studentst,尸{student("王强”,74),student("李刚”,68),student("张雪”,84)};

inti=O,min=O,max=O;

for(i=l;i<3;i++)

(

if(compare(st,max„st,i,)=-1)

max=i;

if(compare(st,min„st,i,)==1)

min=i;

)

COUt<<“最高分:“

cout<<"最低分:"<<(*(st+min)).getd6g()<<"姓名:"v<st,max,.getname()«6ndl;

}

正确答案:

程序如下:

#include<iostream.h>#include<string.h>

classstudent

{charname,10,;

intdeg;

public:

student(charna„=,M,,intd=0);

char*getname();

friendintcompare(student&sl,student&s2);

intgetdegO;

);

voidmain(){

studentst„={student(“王强”,74),student("李刚”,68),student("张雪”,84)};

inti=O,min=O,max=O;

for(i=l;i<3;i++){

if(compare(st,max„st,i,)=-1)max=i;

if(compare(st,min„st,i,)=1)min=i;

}

cout<<"最高分:"<<st,max,.getdeg()<<“姓名:"vvst,max,,getname()vvendl;

cout<<"最低分:”vv(*(st+min)).getdeg()«"姓名:"<<st,max,.getname()v<endl;

)

计算机语言(VC)复习题

一.单选题(共24题,52.8分)

1有关构造函数的说法不正确的是()O

A构造函数名和类名一样

B构造函数无任何函数类型

C构造函数有且只有一个

D构造函数在说明类对象时自动执行

正确答案:C

2下面关于静态数据成员的描述中,错误的是()o

A静态数据成员不是所有该类对象所共用的

B静态数据成员要在类外初始化

C说明静态数据成员时要加修饰符static

D引用静态数据成员时,要加类名及作用域符

正确答案:D

3对于下面循环语句:

inti=0;

do

i++;

while(i*i<10);,其循环体被执行的次数为()。

A4

B3

C5

D2

正确答案:A

4MFC类库中的类按层次关系可知,Cstatic的直接父类为()。

ACWnd

BCObject

CCcmdTarget

DCFrameWnd

正确答案:A

5已知类A是类B的友元,类B是类C的友元,则()。

A类A一定是类C的友元

B类C一定是类A的友元

C类C的成员函数可以访问类B的任何成员

D类A的成员函数可以访问类B的任何成员

正确答案:D

6在类中说明的成员可以使用关键字的是()o

Apublic

Bextem

Ccpu

Dregister

正确答案:A

7对基类和派生类的关系描述中,错误的是()o

A派生类是基类的具体化

B基类继承了派生类的属性

C派生类是基类定义的延续

D派生类是基类的特殊化

正确答案:B

8对于类中定义的成员,其隐含访问权限为()o

Aprotected

Bprivate

Cpublic

Dstatic

正确答案:B

9下列不属于成员函数的是()。

A静态成员函数

B析构函数

C友元函数

D构造函数

正确答案:C

10下面叙述不正确的是()。

A派生类一般都用公有派生

B对基类成员的访问必须是无二义性的

C赋值兼容规则也适用于多重继承的组合

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

正确答案:D

11设有代码"structBOOK{chartitile[40];floatprice;};则下列不正确的变量定

义语句是()。

ABOOKbook;

BBOOKbook={"C++编程”,27.5};

CBOOK*x=newBOOK;

DBOOKx=newBOOK;

正确答案:D

12根据对话框的行为性质,对话框可以分为两类:()。

A对话框资源和对话框类

B模式对话框和非模式对话框

C对话框资源和对话框模板

D消息对话框和模式对话框

正确答案:B

13MFC主要由()组成。

A基础类库、全局函数

B基础类库、全局变量、宏

C基础类库、全局函数、宏

D基础类库、全局函数、全局变量和宏

正确答案:D

14每个C++程序都必须包含这样一个函数,该函数的函数名为()。

Amain

BMAIN

Cname

Dfunction

正确答案:A

15在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

A作为友元函数重载的一元运算符

B作为成员函数重载的一元运算符

C作为友元函数重载的二元运算符

D作为成员函数重载的二元运算符

正确答案:B

16下面说法正确的是()。

A构造函数可以重载,析构函数不能重载

B构造函数不能重载,析构函数可以重载

C构造函数可以重载,析构函数也可以重载

D构造函数和析构函数都不能重载

正确答案:A

17在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员

一定是基类中的()。

A私有成员

B公有成员

C保护成员

D保护成员或私有成员

正确答案:A

18假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb;},则执行Ax(4,5);语

句后,x.a和x.b的值分别为()。

A3和15B5和4C4和20D20和5正确答案:C

19下面关于MFC中类的说法,正确的是()。

ACobject类是MFC所有类的基类

BCView是CWnd类的子类

CCdialog是CWnd类的子类

DCarchive类可以支持串行化操作

正确答案:A

20编写C++程序一般需经过的几个步骤依次是()。

A编辑、调试、编译、连接

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

C编译、调试、编辑、连接

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

正确答案:B

21下列说法正确的是()o

A类定义中只能说明函数成员的函数头,不能定义函数体

B类中的函数成员可以在类体中定义,也可以在类体之外定义

C类中的函数成员在类体之外定义时必须要与类声明在同一文件中

D在类体之外定义的函数成员不能操作该类的私有数据成员

正确答案:B

22通常拷贝初始化构造函数的参数是()。

A某个对象名

B某个对象成员名

C某个对象的引用名

D某个对象的指针名

正确答案:C

23当消息产生时,系统调用CwinApp的()函数对消息进行解析,并发送到

相应的窗口进行处理。

ARun

BCreate

CTranslateMessage

DDispatchMessage

正确答案:A

24程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号

作为分隔符。

A空格或逗号

B逗号或回车

C逗号或分号

D空格或回车

正确答案:D

二.填空题(共12题,26.4分)

1C++中函数的参数传递一种是按值传递,另一种是_________传递。

正确答案:

第一空:地址

第二空:引用;

2this指针始终指向调用成员函数的o

正确答案:

第一空:对象;

3假设为类A定义了构造函数"A(intaa,char*bb=NULL):a(aa),b(bb)",则该类

中至少包含有个数据成员。

正确答案:

第一空:2;

4一个抽象类的派生类可以实例化的必要条件是实现了所有的定

义。

正确答案:

第一空:纯虚函数;

5在已经定义了整型指针p后,为了得到一个包括10个整数的数组,并让p指

向该数组,应使用语句。

正确答案:

第一空:int*p=newint[10];

6两个函数的函数名相同,但参数的个数和类型不同,则称为o

正确答案:

第一空:函数重载

第二空:重载函数;

7为解决多继承中因公共基类而产生的二义性问题,C++提供了机

制。将公共基类声明为它以后,它在派生类中只产生一个实例。

正确答案:

第一空:虚基类;

8如果要把A类成员函数voidf()声明为类B的友元函数,则应在类B的定义中

加入语句;

正确答案:

第一空:friendvoidA::f();

9类是用户定义的类型,具有类类型的变量称为

正确答案:

第一空:对象;

lOclasstest{

正确答案:

第一空:25;

11编译时的多态通过_________实现。

正确答案:

第一空:函数重载;

12假定x是一个逻辑变量,则X||false的值为。

正确答案:

第一空:x;

三.程序分析题(共4题,8.8分)

1分析如下程序写出运行结果。

#include<iostream.h>

classTest{

intx,y;

public:

Test(inti,intj=0){x=i;y=j;}

intget(inti,intj){returni+j;}

);

voidmain(){

Test11(2)42(4,6);

int(Test::*p)(int,int=10);

p=Test::get;

cout«(tl.*p)(5)«endl;

Test*pl=&t2;

cout«(p1->*p)(7,20)«endl;

正确答案:

运行结果:

1527

2分析如下程序写出运行结果。

#include<iostream.h>

classCount{

private:

staticintcount;

public:

Count(){count++;}

〜Count。{count—;}

staticinHM(){returncount;}

);

intCount::count=100;

voidmain()

(

Countcl,c2,c3,c4;

cout«Count::HM();

正确答案:

运行结果:

104

3分析如下程序写出运行结果。

#include<iostream.h>

classA{

private:

doubleTotal,Rate;

public:

A(doubletroubler){Total=t;Rate=r;}

frenddoubleCount(A&a){

a.Total+=a.Rate*a.Total;

returncount;

)

);

voidmain()

(

Aal(1000.0,0.035),a2(768.0,0.028);

cout«Count(al)«","«Count(a2)«endl;

)

正确答案:

运行结果:

1035,789.504

4运行结果:

调用构造函数1。

调用构造函数2。

5调用析构函数。

调用析构函数。

正确答案:

运行结果:

classB:IclassA:hello

四.程序填空(共3题,6.6分)

1输入10个整数,用冒泡排序法按从小打大的顺序排序,并输出排序结果。

程序如下:

#include<iostream.h>

voidmain(){

inti,j,temp,*pt;

int*Pn=(1)int[10];

for(i=l;i<=10;i++){

cout«"Pleaseenteranumber:"«endl;

cin»*(Pn+i);

}

for(i=l;i<=10;i++)

for(j=l;(2);j++)

if(*(⑶))>*(Pn+j+l){

temp=*(Pn+j);

*(Pn+j)=*(Pn+j+l);

*(Pn+j+l)=⑷

)

for(i=l;i<10;i++)

cout«*(Pn+i)«"

正确答案:

答案:

(1)new

⑵j<=10-i

⑶Pn+j

(4)temp

2classA{

inta,b;

public:

A(intaa=O,intbb=O)(1)〃分别用aa和bb对应初始化a和b

()

);

main(){

(2)〃定义类A的对象X并用5初始化,同时定义y,并用x初始化

A*p=&x;

)

正确答案:

答案:

(1):a(aa),b(bb)

(2)Ax(5),y(x)

3Fibonacci数列满足如下列递归关系:

f(l)=Of(2)=lf(n)=f(n-l)+f(n-l)(n>2)

编写程序计算Fibonacci数列第n项值。

程序如下:

#include<iostream.h>

(1);

voidmain(void){

intnumber;

cout«"Pleaseenteraintegernumber:n«endl;

cin»number;

longresult=(2);

cout«nResult=n«result«endl;

)

longFib(intn){

if((3))return0;

elseif(n==2)return1;

else

return(4);;

)

正确答案:

答案:

(1)longFib(int)

(2)Fib(number)

(3)n==l(4)Fib(n-l)+Fib(n-2)

五.编程题(共2题,5.4分)

1已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle

类,二者都有GetPerim()函数计算对象的周长,并编写测试main()函数。

classShape

{public:

Shape(){}

~Shape(){}

virtualfloatGetPerim()=0;

正确答案:

程序如下:

classRectangle:pub

温馨提示

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

评论

0/150

提交评论