VC++模拟试题一.docx

上传人:b****6 文档编号:8815022 上传时间:2023-02-01 格式:DOCX 页数:25 大小:29.93KB
下载 相关 举报
VC++模拟试题一.docx_第1页
第1页 / 共25页
VC++模拟试题一.docx_第2页
第2页 / 共25页
VC++模拟试题一.docx_第3页
第3页 / 共25页
VC++模拟试题一.docx_第4页
第4页 / 共25页
VC++模拟试题一.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

VC++模拟试题一.docx

《VC++模拟试题一.docx》由会员分享,可在线阅读,更多相关《VC++模拟试题一.docx(25页珍藏版)》请在冰豆网上搜索。

VC++模拟试题一.docx

VC++模拟试题一

一.选择题(10分)

1.以下四个关于类的访问控制的描述哪一个是错误的

A.子类不能访问其父类的私有数据成员和成员函数

B.子类的对象不能访问其父类的保护数据成员或者成员函数

C.类的对象不能访问类的保护数据成员或者成员函数

D.类的成员函数不能访问类中的私有数据

2.下面有关重载函数的说法中正确的是

A.重载函数必须有不同的返回值类型

B.重载函数形参个数必须不同

C.重载函数必须有不同的形参列表

D.重载函数名可以不同

3.下列关于构造函数的描述中,错误的是

A.构造函数可以设置默认参数

B.构造函数在定义类对象时自动执行

C.默认构造函数可以没有

D.构造函数不可以重载

4.下列对于WinMain函数的描述中,错误的是

A.WinMain函数的名称是固定的

B.WinMain函数是Windows程序的入口点

C.WinMain函数不能有参数

D.窗口函数与WinMain的关联是通过窗口类的注册实现的

5.MFC常规动态链接库中不能导出的是

A.C风格函数

B.全局变量

C.资源

D.基于MFC的C++类

 

VisualC++语言模拟试卷

(一)

1.设有说明“inti=10;floatx;”,执行“x=5/i;”后,x的值为_______。

A.0.5B.0C.0.0D.1.0

2.为了避免嵌套的条件语句的二义性,C++语言规定else与_______配对。

A.编辑时是在同一列上的if

B.其之前最近的还没有配对过的if

C.其之后最近的if

D.同一行上的if

3.对于C++的函数,正确的叙述是__________。

A.函数的定义不能嵌套,但函数的调用可以嵌套

B.函数的定义可以嵌套,但函数的调用不能嵌套

C.函数的定义和调用都不能嵌套

D.函数的定义和调用均可以嵌套

4.对于下面几个函数:

voidf(intx){…}//1intf(inty){…}//2

intf(inti,intj){…}//3floatk(intx){…}//4

___________是重载函数。

A.4个全部B.1和4C.2和3D.3和4

5.设有以下说明语句:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*prt)[3]=a,*p=a[0];

能正确表示数组元素a[1][2]的表达式是_________。

//(*(prt+1))[2],*((*(prt+1))+2),*(p+5)

A.*((*prt+1)[2])B.*(*(p+5))

C.(*prt+1)+2D.*(*(a+1)+2)

6.下列叙述中,不正确的是__________。

A.类的构造函数可以重载B.类的析构函数可以重载

C.一个类可以不定义构造函数D.一个类可以不定义析构函数

7.执行下面的程序后:

//a=10/((2+1)*(2+1)/(2+1)*(2+1))

#include

#defineSQR(X)(X)*(X)

voidmain(){

inta=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

cout<<“a=“<

}

输出的结果是a=___________。

A.a=10B.a=1C.a=9D.a=0

8.对于C++源程序文件,其缺省的扩展名为_________。

A..C++B..CPPC..CD..cc

9.下列叙述中不正确的是_________。

A.含纯虚函数的类称为抽象类B.不能直接由抽象类建立对象

C.抽象类不能作为派生类和基类D.纯虚函数不能定义其实现部分

10.执行下面的程序

#include

voidmain(void)

{charc=0;cout<

输出的结果是____________。

A.‘\0’B.语法错,不能执行

C.0D.一个空行

2填空题

1.在C++中函数参数的传递方式有三种,分别是:

__值传递__、_地址传递_和_引用传递_。

2.当用成员函数重载双目运算符时,运算符的左操作数必定是____对象________。

3.在类中,定义构造函数的目的是__在产生对象时,对对象的数据成员进行初始化_____。

4.以下程序的输出结果是__1-2___。

voidmain(void)

{intx=3;

do{cout<<(x-=2)<<‘\t’;}while(!

(--x);

}

6.以下程序的输出结果是__100______和___200_______。

#include

intabc(void)

{staticintj;j+=100;returnj;}

voidmain(void)

{cout<

cout<

}

7.以下程序的输出结果是___20_____和____30______。

#include

classBase{

protected:

intx;

public:

Base(inta){x=a;}

};

classA:

publicBase{

public:

A(inta):

Base(a){};

intGetX(){returnx;}

};

classB:

publicBase{

public:

B(inta):

Base(a){};

intGetX(){returnx;}

};

classC:

publicB,publicA{

public:

C(inta):

A(a+10),B(a+20){};

};

voidmain(void)

{Cc(10);

cout<

:

GetX()<

cout<

:

GetX()<

}

9..以下程序输出的两个字母分别是___c_____和____d_______。

#include

ClassX{

public:

virtualvoidf()

{cout<<‘a’<<‘b’<<‘\n’;}

};

ClassY:

publicX{

public:

voidf()

{cout<<‘c’<<‘d’<<‘\n’;}

};

voidmain()

{

Yy;

X*xp=&y;

xp->f();

}

11.下面程序的功能是从数组arr(有n个元素)中找出最小元素值,并返回其引用。

int&findmin(intarr[],intn)

{intpos=0;

for(inti=1;i<=n-1;++i)

if(___arr[i]

return__arr[pos]__;

}

12.下面是求前n个自然数和的递归函数(即求1+2+3+…+n)。

floatsum(intn)

{if(__n==1__)return1;

elsereturn(___n+sum(n-1)__);

}

14.编程求100—300之间的所有素数。

要求

(1)每行输出5个素数;

(2)判断一个整数是否为素数用一个函数来实现;

//(3)将程序运行的结果存放在文件data.txt中。

#include

//#include

#include

#include

intprime(intn)

{

inti,k;

k=sqrt(n);

for(i=2;i

if(n%i==0)break;

if(i>=k)return1;

elsereturn0;

}

voidmain(void)

{

/*

ofstreamfile("data.txt");

if(!

file)

{cout<<"Can'topenthefile!

";

exit

(1);

}*/

inti,g=0;

for(i=101;i<300;i+=2)

{

if(prime(i))

{

cout<

//file<

++g;

if(g%5==0){

//file<<'\n';

cout<<'\n';

}

}

}

//file.close();cout<<'\n';

}

VC++模拟题2

 一、选择(在A、B、C、D中选择一个正确的,40分,每题2分)

1.若整型变量现在的值是–3,则表达式a&0xf运算后的值是

A)-13B)13C)-3D)3

2.下列叙述中,哪一个不对?

A)类的构造函数可以重载B)类的析构函数可以重载

C)一个类可以不定义构造函数D)一个类可以不定义析构函数

3.设有以下的定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*prt)[3]=a,*p=a[0];

则下列能够正确表示数组元素a[1][2]的表达式是

A)*(*prt+1)[2])B)*(*(p+5))

C)(*prt+1)+2D)*(*(a+1)+2)

4.执行下面的程序后,a的值是

#defineSQR(X)X*X

voidmain()

{inta=10,k=2,m=1;

a%=SQR(k+m)/SQR(k+m);

}

A)1B)3C)9D)0

5.以下程序段的输出结果是

intx=3;

do{

cout<<(x-=2)<<’’;

}while(!

(--x));

A)1B)30C)1–2D)死循环

6.程序

#include

classT{public:

staticintx;};

intT:

:

x=1;

voidmain()

{Ta,b;

a.x=10;b.x=20;

cout<

cout<<''<

:

x<

}

执行后的输出是

A)202020B)001

C)20201D)有语法或逻辑错误

7.下列程序的输出是

#include

#include

voidmain()

{

charp1[20]="abcd",*p2="ABCD";

charstr[50]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));

cout<

}

A)xyabcABB)abcABz

C)ABabczD)xycdBCD

8.设有说明int(*ptr)[M];其中的标识符ptr是

A)M个指向整型变量的指针

B)指向M个整型变量的函数指针

C)一个指向具有M个整型元素的一维数组的指针

D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量

9.设有如下的函数定义

intf(char*s)

{if(!

(*s))return0;

elsereturn1+f(s+1);}

若在主程序中用下面的语句调用上述函数,则输出为

cout<

”)<

A)1B)6C)8D)0

10.设有类T的定义为

classT{

intx;

public:

T(inta){x=a;}

};

则下面的说明

Ta;//

(1)

Tb(4);//

(2)

Tc=b;//(3)

Td(b);//(4)

正确的是

A)

(1),

(2),(3),(4)B)

(1),

(2),(3)C)

(2),(3)D)

(2),(3),(4)

11.下面的函数在m为3,n为1时返回的值是

intAck(intm,intn)

{

if(!

m)returnn+1;

if(!

n)returnAck(m-1,1);

else

returnAck(m-1,Ack(m,n-1));

}

A)13B)2C)21

D)死循环(递归无法结束)

12.下面程序的输出是:

#include

classBase{

protected:

intx;

public:

Base(inta){x=a;}

};

classA:

publicBase{

public:

A(inta):

Base(a){};

intGetX(){returnx;}};

classB:

publicBase{

public:

B(inta):

Base(a){};

intGetX(){returnx;}};

classC:

publicB,publicA{

public:

C(inta):

A(a+10),B(a+20){};};

voidmain()

{

Cc(10);

cout<

:

GetX()<<','<

:

GetX()<

}

A)30,20B)20,30

C)20,20D)30,30

13.程序的输出为:

#include

classX{

public:

intx;

X(inta){x=a;}

};

classA:

virtualpublicX{

public:

A(inta):

X(a){}

};

classB:

virtualpublicX{

public:

B(inta):

X(a){}

};

classC:

publicA,publicB{

public:

C(inta):

A(20),B(30),X(40){}

};

voidmain(){

Cc(40);

cout<

}

A)20B)30

C)40D)50

14.程序的输出是:

#include

classX{

public:

virtualvoidf()

{cout<<”a”;}};//A

classY:

publicX{

public:

voidf()

{cout<<”b”;}};

voidmain()

{Yy;X*xp=&y;

xp->f();

}

A)abB)aaC)aD)b

15.将上题中标有//A的一行中

的virtual去掉,则输出为

A)abB)bC)aD)非法

16.下列叙述中,正确的是

A)类是一种用户自定义类型

B)类是实现数据封装的单位

C)一个类可以为多个派生类的基类,派生类也可从多个基类继承

D)以上的说法都是正确的

17.下列定义:

classPoint{intx,y;

public:

Point(inta=0,intb=0);//

(1)

Point(Point&aPoint);//

(2)

Point(Point*p);//(3)

Point(PointaPoint);//(4)

};

A)

(1)是缺省构造函数

B)

(2)是缺省构造函数

C)(3)是缺省构造函数

D)(4)是缺省构造函数

18.上题中拷贝初始化函数是

A)

(2)B)

(2)和(4)

C)(3)D)没有定义

19.下列叙述中,哪一个不正确?

A)含纯虚函数的类称为抽象类

B)不能直接由抽象类建立对象

C)抽象类中能包含构造函数

D)抽象类中不能包含析构函数

 

20.下列叙述中正确的是

A)基类中的虚函数在派生类中一定要重定义

B)成员函数中虚函数也可被重载

C)基类中的构造函数不可定义为虚函数

D)以上的没有正确的

 

一、单选题(每题2分,共14分)

2、对定义重载函数的下列要求中,错误是()。

A、要求参数的个数不同

B、要求参数中至少有一个类型不同

C、要求参数个数相同时,参数类型不同

D、要求函数的返回值不同

3、 函数原型语句正确的是(    )。

 

A、int Function(void a);   B、void Function (int); 

C、int Function(a); D、voidenum(double a,intb=1);

4、下面有关析构函数的描述不正确是()。

A、析构函数可以带参数B、析构函数不能重载

C、析构函数无任何返回类型D、析构函数可以为虚函数

5、假定A,Z分别为一个类,则(    )为类A的拷贝构造函数的原型说明。

 

A、A(Z& x); B、A(A& x); 

C、void A(A& x); D、A(A x); 

6、有关运算符(操作符)重载的描述错误的是()。

A、+*==new都可以重载B、不能改变操作数的数目

C、不可以改变优先级数D、++、--不能被重载

7、intFunction(){

staticinta=6;returna+=6;}

voidmain(){

std:

:

cout<

:

cout<<",";std:

:

cout<

}

输出结果是()

A、6,12B、12,18C、12,12D、6,6

 

1、执行完下列语句后,n的值为多少?

(c)

staticintn;

for(;n<=10;n++)n+=2;

(A)10(B)11

(C)12(D)不确定值

4、下面关于构造函数的描述错误的是(b)

(A)函数名与类名相同(B)不能是内联函数

(C)没有返回值(D)可以重载

5、inta[2][3]={1,2,3,4,5,6};下面错误的说法是(d)

(A)a数组是一个二行三列的数组(B)a与&a[0]等价

(C)a[1][1]元素的值是5(D)a是变量

7、下面循环的循环次数是(a)

inti;for(i=3;i<10;i=i+2)i++;

(A)3(B)4(C)5(D)6

9、以下能构成函数重载的是(d)

(A)intmax(intx,inty)(B)intmax(intx,inty)

voidmax(intx,inty)intmax(inta,intb)

(C)intmax(intx,inty)(D)intmax(intx,inty)

voidmax(inta,intb)charmax(charx,chary)

10、下面哪个是合法的字符串(a)

(A)“”(B)‘a’(C)‘xyz’(D)123

判断题

20.当使用指针变量访问类的成员时,必须先使指针变量指向该类的某个对象。

(√)

21.构造函数和析构函数是类的两个特殊函数(√)

22.在继承关系中,被继承的类称为基类,而通过继承定义出的新类称为派生类。

(√)

23.在程序中可以把基类的对象当作派生类对象来处理。

(x)

24.类的静态成员是所有该类对象所共有的,并不依赖于某一个对象的存在而存在。

(√)

25.友元函数是类的成员函数。

(x)

26.返回值可以作为重载函数的标识。

(x)

27.运算符重载是一种特殊的函数重载。

(√)

29.模板只是一个说明,只有实例化和才能使用。

(√)

选择题

30.关于类,下列说法不正确的是(D)

A.在类中,成员的默认访问特性是私有的。

B.类实现的数据的封装。

C.类实质上是一种数据类型。

D.在类定中,必须包含private、protected、public三种访问方式的对应部分。

31.关于对象,下列说法不正确的是(C)

A.对象是类的一个实例。

B.任何一个对象只属于一个类。

C.一个类只能有一个对象。

D.类和对象之间的关系,类似于数据类型和变量之间的关系。

32.关于构造函数,下列说法不正确的是(A)

A.一个类中有且仅有一个构造函数。

B.构造函数在声明类对象时被自动调用。

C.构造函数没有返回类型。

D.类的构造函数名称必须和类名称相同。

33.关于析构函数,下列说法不正确的是(B)

A.一个类中有且仅有一个析构函数。

B.析构函数可以有参数。

C.析构函数没有返回类型。

D.析构函数在对象销毁时被自动调用。

34.关于类的继承,下列说法不正确的是(A)

A.继承到派生类中的基类成员,其访问权限保持不变。

B.派生类的成员有自身成员和基类成员两个部分。

C.派生类至少有一个基类。

D.派生类是基类定义的延续。

35.关于虚拟函数,下列说法正确的是(C)

A.包含虚拟函数的类不能生成实例。

B.包含虚拟函数的类被称为抽象类。

C.虚拟函数在基类中定以后,如果没有新的功能需求,无须再在派生类重新定义。

D.纯虚拟函数,在派生类中必须定义实现。

36.友元的作用是(D)

A.增加成员函数的种类。

B.加强类的封装性。

C.实现数据的隐藏性。

D.提高程序的运行效率。

37.关于函数重载,下列说法不正确的是(B)

A.构造函数的重载,使得类对象的初始化更灵活。

B.不要使用重载函数来描述毫不相干的算法。

C.默认参数不能作为区分函数重载的标识。

D.重载函数在编译时是根据参数表来进行选择的。

38.关于类对象构造的顺序,下列说法正确的是(B)

A.自身、成员对象、父类对象。

B.父类对象、成员对象、自身。

C.父类对象、自身、对象成员。

1、VC基础习题总汇3

2、2009-07-0421:

08

 

第一部分模拟试题

第一题单项选择题

1、下面字符串中可以用做C++标识符的是()。

A、_521B、computer~1C、caseD、3var

2、面向对象程序设计思想的主要特征中不包括()。

A、封装性B、多态性C、继承性D、功能分解,逐步求精

3、下列十六进制数整型常量的写法中,错误的是()。

A、0xafB、2f0xC、0X1bD、0Xae

4、

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

当前位置:首页 > PPT模板 > 图表模板

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

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