C复习题库+C试题库2_第1页
C复习题库+C试题库2_第2页
C复习题库+C试题库2_第3页
C复习题库+C试题库2_第4页
C复习题库+C试题库2_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

C++习题

1.下列字符列中,可作为CT语言程序自定义标识符是().

A.switchB.fileC.breakD.do

2.运算符+、<=、=、%中,优先级最低的运算符是().

A.+B.<=C.=D.%

3.设变量m,n,a,b,c,d均为&执行(m=a=b)||(n=c==d)后,m,n的值是().

A.0,0B.0,1C.1,0D.1,1

4.字符串"vm\x43\\\np\102quw的长度是().

A.8B.9C.16D.17

5.设有代码“inta=6;”,则执行了语句"a+=a-=a*a:"后,变量a的值是().

A.OB.-24C.-40D.-60

6.voidmainO

{intx=-l;

do

{x=x*x;}

while(!x);}

下列说法正确的是().

A.是死循环B.循环执行两次

C.循环执行一次D.有语法错误

7.下面有关for循环的正确描述是().

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判断表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来

8.下面程序段()。批注[wl]:从右到左x<=2为真1时

x=3;

do

(y=x—:

if(!y){cout«wx”;continue:)

cout«"#";}

while(l<=x<=2):(K=x)=1,0bool型

A.将输出##B.将输出##*

C.是死循环D.含有不合法的控制表达式

9.以下正确的说法是().

A.用户若需要调用标准函数,调用前必须重新定义

B.用户可以直接调用所有标准库函数

C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数

D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函

10.在参数传递过程中,对形参和实参的要求是。.

A.函数定义时,形参一直占用存储空间

B.实参可以是常量、变量或表达式

C.形参可以是常量、变量或表达式

D.形参和实参类型和个数都可以不同

11.对数组名作函数的参数,下面描述正确的是O。

A.数组名作函数的参数,调用时将实参数组复制给形参数组

B.数组名作函数的参数,主调函数和被调函数共用一段存储单元

C.数组名作参数时,形参定义的数组长度不能省略

D.数组名作参数,不能改变主调函数中的数据

12.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正

确引用(其中0WK10).

A.p[i]B.*(♦(a+i))C.a[p-a]D.*(&a[i])

13.以下程序的输出结果是().

ttinclude<iostream.h>

voidmainO

(chars|X2134211”,*p;

intvl=0,v2=0,v3=0,v4=0:vlv2v3v4

for(p=s:*p:p++)2434

switch(*p)

(

case'1’:vl++;

cas。'3':v3++:

case2*:v2++;

default:v4+4;

)

cout«vl«*,*«v2«<,\<v3«*,"«v4«endl;

)

A.4,2,1,1B.4,7,5,8C.7,3,2,1D.8,8,8,8

14.下列声明结构体变量错误的是()・

A.structstudentB.structstudent

{intno;{intno;

charname[16];charname[16];

}stl,st2;);

structstudentstl,st2;

C.structstudentD.structstudent

{intno:{intno:

charname[16];charname[16];

);};

structstl,st2;studentstl,st2;

15.对类的构造函数和析构函数描述正确的是().

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

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

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

D.构造函数不能重载,析构函数也不能重载

16.下面对于友元函数描述正确的是()»

A.友元函数的实现必须在类的内部定义B.友元函数是类的成员

C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员

17.派生类的对象对它的基类成员中()是可以访问的。

A.公有继承的公有成员B.公有继承的私有成员

C.公有继承的保护成员D.私有继承的公有成员

18.C++类体系中,不能被派生类继承的有(”二

A.构造函数B.虚函数C.静态成员函数D.赋值操作函数

19.以下()成员函数表示虚函数。

A.virtualintvf(int);B.voidvf(int)=0:

C.virtualvoidvf0=0;D.virtualvoidvf(int){};

20.下面对静态数据成员的描述中,正确的是(

A.静态数据成员可以在类体内进行初始化

B.静态数据成员不可以在类体内进行初始化

C.静态数据成员不能受private控制符的作用

D.静态数据成员可以直接用类名调用??

21.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间

接基类的成员。

A.规律性B.传递性C.重复性D.多样性

22.若有以下定义,则释放指针所指内存空间的操作是()。

floatr=newsfloat[10];

A.deleter;B.delete*r:

C.delete[]r:D.deleter[];

23.若有以下定义,则对字符串的操作错误的是()。

chars[10]="Program",

A.st.rcpy(s,t);R.cnut<<str1pn(s);批注[L2];Cup>Ilus

C.strcat(''this”,t);D.cin»t;

24.在if语句中的表达式是().

A.只能是表达式B.只能是关系表达式和逻辑表达式

C.只能是逻辑表达式D.可以是任意表达式

25.在用关键字class定义的类中,以下叙述正确的是().

A.在类中,不作特别说明的数据成员均为私有类型

B.在类中,不作特别说明的数据成员均为公有类型

C.类成员的定义必须是成员变量定义在前,成员函数定义在后

D.类的成员定义必须放在类定义体内部

23456789101112131415

1

BCCBDCDCDBBBBCA

16171819202122232425

CAADBBCCDA

公共基础知识

一、选择题

(1)下列关于栈的叙述正确的是

A)栈是非线性结构B)栈是一种树状结构

C)栈具有先进先出的特征D)栈具有后进先出的特征

(2)结构化程序设计所规定的三种基本控制结构是

A)输入、处理、输出B)树形、网形、环形

C)顺序、选择、循环D)主程序、子程序、函数

(3)结构化程序设计的一种基本方法是批注[w3J:

A)run();B)Base.fun();C)Base::t'un();D)Base->fun();

(9)有如下程序:

#include

classBASE(

charc;

public:

BASE(charn):c(n)()

virtual-B.\SE(){cout<c};

classDERIVED:publicBASE{

charc;

public:

DERIVED(charn):BASE(n+l),c(n){)

-DERIVED(){cout<c};

intn)ain()

{DERIVED—3);

return0;

)

执行上面的程序将输出O'批注|w4]:

A)XYB)YXC)XD)Y

(10)在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;

其中只能用于检测输入流状态的操作函数名称是。

A)failB)eofC)badD)good

A.一:选择题

1-5:BBCCC

6-10:DBCAB

1.下列有关类的说法不正确的是()-

B.对象是类的一个实例

C.任何一个对象只能属于一个具体的类

n一个类只能有一个对象

E:类与对象的关系和数据类型与变量的关系相似

答案:C

分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可

以有多个对象。

2.下面()项是对构造函数和析构函数的正确定义。

A.voidX::X(),voidX::~X()

B.X::X(参数),X::~X()

C.X::X(参数),X::~X(参数)

D.vnidX::X(参数),vnidX::~X(参数:

答案:B

分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可

重载。

3.()的功能是对象进行初始化。

A.析构函数B.数据成员C构造函数D.静态成员函数

答案:c

分析:当一个对象定义时,C++编译系筑自动调用构造函数建立该对象并进行初始化;当一

个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作:

4.下列表达方式正确的是(

A.classP(B.classP{

publicpublic:

intx=15:intx;

voidshow(){cout«x:}voidshow(){cout«xt}

};}

C.classP{D.classP{

intf;public:

};inta;

f=25;voidSeta(intx,{a=x;}:

答案:D

分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数

才能存取类中的私有数据。

A.5.拷贝构造函数具有的下列特点中,<〉是错误的“

B.如果一个类中没有定义拷贝构造函数时.夏统桥自动生成一个默认的

C.拷贝构造函数只有一个参数,并且是该类对象的引用

I).拷贝构造函数是一种成员函数

E.拷贝构造函数的名字不能用类名

答案:D

分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的:拷贝构造

函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被

指定返回类型;拷贝构造函数是一种成员函数。

6.关于静态成员的描述中,()是错误的。

A.静态成员可分为静态数据成员和静态成员函数

B.静态数据成员定义后必须在类体内进行初始化

C.静态数据成员初始化不使用其构造函数

D.静态数据成员函数中不能直接引用非静态成员

答案:B

分析:静态成员可分为静态数据成员和静态成员函数:静态数据成员被定义后,必须对

它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其

他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数

无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。

7:关于友元的描述中,()是错误的。

A.友元函数是成员函数,它被说明在类体内

B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用

D.友元类中的所有成员函数都是友元函数

答案:A

8、;对类的构造函数和析构函数描述正确的是。。

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

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

C.构造西数可以析构函数也可以重我

构造函数不能重载,析构函数也不能重载

答案:A

9、类的析构函数的作用是().

A.一般成员函数B.类的初始亿C.对象初始化D.删除对象

答案:D

10、假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为().

A.OneClass(OneClassp);B.OneClass&(OneClassp):

C.OneClass(OneClass&p);D.OneClass(OneClass*p);

答案:C

11.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问

权限定义为().

A.publicB.protectedC.privateD.static

答案:A

12、下面对静态数据成员的描述中,正确的是().

A.静态数据成员可以在类体内进行初始化

B.静态数据成员不可以在类体内进行初始化

C.静态数据成员不能受private控制符的作用

D.静态数据成员可以直接用类名调用

答案:B

13、下面对静态数据成员的描述中,正确的是()。

A.静态数据成员是类的所有对象共享的数据

B.类的每一个对象都有自己的野态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

答案:A

Cl।试题1

(1)已知下列语句中的x和y都是int型变量,其中不正确的语句是

A)y+=++x;B)++x+=y;C)y=x++;D)x++=y;

(2)若x是一个bool型变量.y是一个值为100的int型变量,则表达式!x&&y>()的值

I].

A)为trueB)为falseC)与x的值相同D)与x的值相反

(3)执行语句序列

intn;

cin»n;

switch(n){

case1:

case2:cout«'X';

case3:

case4:cout«'Y';break;

default:cout«'Z,;}

时,不可能出现的情况是[1»

A)显示:XB)显示:YC)显示:ZD)显示:XY

(4)执行语句序列

intx;

cin»x;

if(x>250)coutvc'X';

if(x<250)cout«'Y';

elsecout«'X,;

时,不可能出现的情况是[h

A)显示:XB)显示:YC)显示:XYD)显示:XX

(5)要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88.0和0,

则下列定义语句中不正确的是I].

A)intvcct(]={30^0,-88}:B)intvcct(]={30.50.-88.0,0);

C)intvect[5]=(30,50,-88);D)intvectf5|={30,50,-88.0,0);

(6)已知某应用系统中已经定义了函数fun,其原形是intfun(char='A*);则下列函数中,

可以在同一系统中加以重载的是[]o

A)intfun();B)intfun(char);

C)intfun(char,int);D)intfun(char.double=0.0);

(7)若指针p定义为constchar»p=*'Luchy!";则[].

A)p所指向的数据不可改变.p在定义时可以不初始化.

B)p所指向的数据不可改变,p在定义时必须初始化。

C)p本身不可改变,p在定义时可以不初始化.

D)1,本身不可改变,p在定义时必须初始化。

(8)已知数组A和指针p定义为:inlA[20][10甘p;,要使p指向A的首元素,正确的赋值表

达式是[Jo

A)p=&A或p=A[0][0JB)p=A或p=&A[OJ[OJ

C)p=&A(0]或p=A(0][0]D)p=A[0]或p=&A[0][0J

(9)己知函数func的原形是

doublefunc(doouble*pd,int&ri);

变量x和y的定义是

doublex;inty;

杷x和y分别作为第一参数和第二参数来调用函数func.正确的调用语句是[].

A)func(x,&y);B)func(&x,y);C)func(&x,&y);D)func(x,y);

(10)要使字符串变量str具有初值”Lucky”,正确的定义语句是[].

A)charstrU={'L','u','c','k','y'};B)charstr[5]={'L','u','c','k','y');

C)charstr[]="Lucky";D)charstr[5]="Lucky";

(11)已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说

明是Ik

A)intMAT(]|10]B)intMAT[3][]

C)intMAT|10]|3|D)intMAT|]|]

(12)若指针p定义为char*="Luchy!";则[]•

A)p所指向的数据不可改变,p在定义时可以不初始化。

B)p所指向的数据不可改变,p在定义时必须初始化。

C)p本身不可改变,p在定义时可以不初始化。

D)p本身不可改变,p在定义时必须初始化。

(13)在下列表达式中.与下标引用AIHLH不等效的是【1-

A)*(A+i+j)B)*(AliJ+j)C)*(*(A+i)+j)D)(*(A+i))Lj]

(14)要使语句p=ncwdoublc[20];能够正常执行,变量p应定义为|]。

A)doublepf20];B)doublep:

C)double(*p)[20];D)double*p;

(15)执行下列语句序列批注[wS]:

structAA{intival;chareval;};

structBB{intival;AAra;};

structCC{intival;AAra;BBrb;};

CCrc={66,{rc.ival+1,rc.ra.ival+1},{69,170,71}}};

cout«rc.ival«',,«rc.raJval«','«rc.rb.ra.ival;

后,显示在屏幕上的是[].

A)66,67,68B)67,68.69C)66,67,70D)67,69,70

(16)类的默认的无参构造函数[].

A)在任何情况下都存在

B)仅当未定义无参构造函数时存在

C)仅当未定义有参构造函数时存在

D)仅当未定义任何构造函数时存在

(17)语句ofstreamfC'SALARY.DAT'\ios^norcpIacc|ios::binary);的功能是建立流对象f,

并试图打开文件SALARY.DAT并与之连接,而且[].

A)若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件.

B)若文件存在,将其截为空文件;若文件不存在,打开失败。

C)若文件存在.将文件指针定位于文件首:若文件不存在.津立一个新文件。

D)若文件存在,打开失败:若文件不存在,建立一个新文件。

(18)执行下列语句序列

struct?\A{intival;chareval;};

structBB{intival;AAra;);

structCC{intival;AA*ra;BBrb;};

CCrc={66,newAA,{69,{70,71}}};

rc.ra->ival=rc.ival+l;

rc.ra->cval=rc.ra->ival+1;

cout«rc.ival«','«rc.ra->ival«*,,«rc.rb.ra.ival;

后,显示在屏幕上的是11.

A)67,69,70B)66,67,70C)67,68,69D)66,67,68

(19)类的默认的拷贝构造函数【].

A)在任何情况下都存在

B)仅当未定义拷贝构造函数时存在

C)仅当未定义有参构造函数时存在

D)仅当未定义任何构造函数时存在

(20)语句ofstreamf('*SALARY.DAT"»ios::n(Kreate|ios::trunc);的功能是建立流对象f,

并试图打开文件SALARY.DAT并与之连接,而且[].

A)若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。

B)若文件存在,将其截为空文件;若文件不存在,打开失败。

C)若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。

D)若文件存在.打开失败;若文件不存在,建立一个新文件。

答案:」~5:DDACA6〜1Q:CADBC

11〜15:ADADC16〜20:DDBBB

C++试题2

1.下列变量名中,()是合法的。

A.56AB._abcC.d-PtrD.while

2.下列各种运算符中,()优先级最高。

A.+B.&&C=D.*=

3.设变量m,n,a,b,c,d均为0,执行(m=a=b)&&(n=c==d)后,m,n是<

A.0,0B.0,1Cl,0D.b1

4.字符串"\t\v\\\Owhich\n”的长度是().

A.4B.10C.9D.字符串有非法字符,输出值不确定

5.设a=2,b=3,c=2:计算a+=b*=(++b-c++)中a、b、c的值().

A.8、6、2B,2、4、2C.10、8、3D.5、3、3

6.已知:inti=5,下列do-while循环语句的循环次数为()。

do{cout«i—«endl;

i—:

}while(i!=0);

A.0B.1C.5D.无限

7.下面关于循环语句的描述中,()是错误的。

A.循环体内可以包含有循环语句

B.循环体内必须同时出现break语句和continue语句

C.循环体内可以出现选择语句

D.循环体内可以是空语句

8.下面程序段()・批注|w6]:

x=3;

do

{y=x—:

if(!y)(cout«wx”;continue;}

cout«w;}

while(x>=l&&x<=2);

A.将输出##B.将输出#糊

C.是死循环D.含有不合法的控制表达式

9.在函数的定义格式中,下面各组成部分中,()是可以省略的。

A.函数名B.函数体C.函数数据类型说明D.函数参数

10.在函数的引用调用时,实参和形参应该是使用().

A.变量值和变量B.地址值和指针C.变量值和引用D.地址值和引用

11.以下关于文件操作的叙述中,不正确的是().

A.打开文件的目的是使文件对象与磁盘文件建立联系

B.文件读写过程中,程序将直接与磁盘文件进行数据交换

C.关闭文件的目的之一是保证将输出的数据写入硬盘文件

D.关闭文件的目的之一是释放内存中的文件对象

12.若有语句inta[10]={0,1,23,4,5,6,7,8,9},*p=ai则()不是对a数组元

素的正确引用(其中0Wi<10)・

A.p[i]B.♦(*(a+i))C.a[p-a]D.*(&a[i])

13.以下程序的输出结果是()。

ttinclude〈iostream.h>

voidmainO

{chars[]=*abcdefbcde*,*p=s;

intvl=0,v2=0,v3=0,v4=0;

for(p:*p;p++)

switch(*p)

case'a':vl++;break;

case'b':v3++;break;

case'e':v2++;break;

default:v4++;

cout«vl«*,*«v2«*,*«v3«*,*«v4«endl;

A.1,2,2,5B.4,7,5,8C.1,5,3,10D.8,8,8,8

14.下列结构体定义,正确的是

A.record(B.structrecord

intno;

charnum[16];charnum[16];

float,score;floatscore;

);

C.structrecord{D.structrecord{

intno;intno

charnum[16];charnum[16]

floatscore:floatscore

15.下列是构造函数的特点,()是错误的。

A.构造函数是一种成员函数,它具有一般成员函数的特点

B.构造函数的名称与其类名相同

C.构造函数必须指明其类型

D.一个类中可定义一个或多个构造函数

16.关于友元函数的描述中,()是错的。

A.友元函数是成员函数,它被说明在类体内

B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用

D.友元类中的所有成员函数都是友元函数

17.下列对派生类的描述中,()是错误的。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少应有一个基类

C.基类中成员访问权限继承到派生类中都保持不变

D.派生类的成员除了自己定义的成员外,还包含了它的基类成员

18.C++类体系中,能被派生类继承的有().

A.构造函数B.虚函数C.友元函数D.析构函数

19.关于下列虚函数的描述中,()是正确的。

A.虚函数是一个static存储类的成员函数

B.虚函数是一个非成员函数

C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

D.派生类的虚函数与基类的虚函数应具有不同的类型或个数

20.以下有关静态数据成员函数的叙述不正确的是().

A.静态成员函数屈于整个类

B.对静态成员函数的引用不允许使用对象名

C.在静态成员函数中不能直接引用类的非静态成员

D.使用类名可以直接调用具静态成员函数

21.下列有关运算符重载的描述中,()是正确的.

A.运算符重载可改变其优先级B.运算符重载不改变其语法结构

C.运算符重载可改变其结合性D.运算符重载可改变其操作数的个数

22.对new运算符的下列描述中,()是错误的。

A.它可以动态创建对象和对象数组

B.用它创建对象数组时必须指定初始值

C.用它创建对象时要调用构造函数

D.用它创建的对象可以使用运算符delete来释放

23.下列是为字符数组赋字符串的语句组,其中借识是().

ww

A.chars[10]:s="program;B.chars[]="program:批注[L7]:数组名字是数针名贵.不可改变

C.chars[10]=wHello!n;D.chars[10]jstrcpy(s,whello!);

24.当调用函数时,实参是一个一维数组名a,则向函数传送的是()。

A.数组的长度B.数组所有元素的值

C.数组元素a[0]的值D.数俎元素a[0]的地址

25.下列有关类的说法不正确的是()。

A.对象是类的一个实例

B.任何一个对象只能属于一个具体的类

C一个类只能有一个对象

D.类与对象的关系和数据类型与变量的关系相似

答案:1〜5:BADBC6~10:DBBDC

11〜15:BBACC16〜20:ACBCB

21—25:BBADC

1:指出下列对定义重载函数的要求中,哪些是错误的提法。

A.要求参数的个数相同。B.要求参数中至少有一个类型不同。

C.求函数的返回值不同。D.要求参数的个数相同时,参数类型不同。

答案:C

2:下列运算符中,()运算符在C++中不能重载。

A.?:B.[]C.newD.&&

答案:A

A.3:下面关于左元的描述中.错误的是()•

B.友元函数可以访问该类的私有数据成员

C.一个类的友元类中的成员函数都是这个类的友元函数

D.友元可以提高程序的运行效率

E.类与类之间的友元关系可以继承

答案:D

4:下述静态成员的特性中,()是错误的。

A.静态成员函数不能利用this指针

B.静态数据成员要在类体外进行初始化

C.引用静态数据成员时,要在静态数据成员名前加〈类名〉和作用域运算符

D.辞态数据成员不是所有对象所共有的

答案:D

5:关于虚函数的描述中,()是正确的。

A.虚函数是一个静态成员函数

B.虚函数是一个非成员函数

C.虚函数既可以在函数说明时定义,也可以在函数实现时定义

D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

答案:D

6:下列关于动态联编的描述中,错误的是().

A.动态联编是以虚函数为基础

B.动态联编是运行时确定所调用的函数代码的

C.动态联编调用函数操作是指向对象的指针或对象引用

D.动态联编是在编译时确定操作函数的

答案:D

8:下面4个选项中,()是用来声明虚函数的。

A.virtualB.publicC.usingD.false

答案:A

9:编译时的多态性可以通过使用()获得。

A.虚函数和指针B.重载函数和析构函数C.虚函数和对象D.虚函数和引

答案:A

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

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

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

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

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

答案:B

11:下列描述中,()是抽象类的特征.

A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能

说明其对象

答案:D

12:以下()成员函数表示虚函数.

A.virtualintvf(int):B.voidvf(int)=0;

C.virtualvoidvf0~0;D.virtualvoidvf(int){);

答案:D

13:如果一个类至少有一个纯虚函数,那么就称该类为(A).

A.抽象类B.虚函数C.派生类D.以上都不对

答案:A

14:要实现动态联编,必须通过()调用虚函数。

A.对象指针B.成员名限定C.对象名D.派生类

答案:A

15:下面描述中,正确的是().

A.virtual可以用来声明虚函数

B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

C.即使基类的构造函数没有参数,派生类也必须建立构造函数

D.静态数据成员可以通过成员初始化列表来初始化

答案:A

16:已知inta,*pa=&a;输出指针pa十进制的地址值的方法是().批注(w8J:

A.cout«pa;B.cout«*pa:

C.cout«&pa;D.cout«long(&pa);

答案:D

17:关于read。函数的下列描述中,()是对的。

A.函数只能从键盘输入中获取字符串

B.函数所获取的字符多少是不受限制的

C.该函数只能用于文本文件的操作中

D.该函数只能按规定读取所指定的字符数

答案:D

18:下列一维数组定义正确的是().

A.x=6:intnum[x]:B.constintx=6:floata[x];

B.constfloatx=6:intb[x];D.constintx=6;intc[x];

答案:B,

19:下面选项中等价的是()o

A.1m8[2][3]={1,0,2,2,4,5}与1玳&[2]口={1,0,2,2,4,5);

B.inta[][3]=U,0,2,2,4,5)与Inta[2][3]={1,0,2,2,4,5):

C.inta[2][3]={3,4,5}与inta[][3]={3,4,5};

D.inta⑵[3]={0,1}与inta[2][3]={{0},{1});

答案:B,

20:下面程序的输出结果是().

#include<iostream.h>

voidmain()

{inta[3][3]={{1,2)»{3,4},{5});

intsum=0;

for(intI=l;I<3;I-n-)

for(intj=O;j<=I;j++)

sum+=a[I][j];

cout«sum«endl;

)

A.12B.14C.15D.13

答案:A

21:下列数组的定义中,()是错误的。

A.charcal口={'m','n'};B.charca2="name";

C.charca3[4]=wyour”;D.intarray[]={l,2,3,4};

答案:C

22:下面程序的输出结果是().

#include<iostream.h>

#include,zstring.h"

voidmain()

{chara[]="welcome",b[]="well";

strcpy(a,b);

cout<<a«endl;

)

A.weHomeB.wellomC.wellD.wellwe

答案:C

23:下面关于数组的说法正确的是().

A.它与普通变量没什么区别B.它的元素的数据类型可以相同,也可以不同

C.它用数组名标识其元素D.数组的元素的数据类型是相同的

24:下列说法正确的是(

A.字符型数组与整型数组可通用

B.字符型数组与字符串其实没叶么区别

C.当字符串放在字符数组中,这时要求字符数组长度比字符串长1个单元,因为要

放字符串终结符'\0'

D.字符串的输出可以用它所存储的数组来输出,也可以字符串的形式整体输出,结

果没区别

C

25:给出下面定义:

chara[]="abcd";

charb[]={'a','b','c','d'};

则下列说法正确的是()»

A.数组a与数组b等价B.数组a和数组b的长度相同

C.数组a的长度大于数组b的长度D.数组a的长度小于数组b的长度

A

26:下面程序的输出结果为().批注|w9]:

#include<iostream.h>

#include<string.h>

voidmain()

{charst[20]=//hello\0\t\\//;

cout«strlen(st);

cout«sizeof(st)«endl:

cout«st;

A.520B.1220C.520D.1120

Hellohello\0\t\\hello\thello\

27:下面程序的输出结果是().

#include"iostream.h"

voidmain()

{intn[2],I,j,k=2;

for(I=0;I<k;I++)

for(j=0;j<k:j++)

n[j]=n[I]+l;

cout«n[j-2];

)

A.不确定的值B.3C.2D.1

(1)下面概念中,不属于面向对象方法的是.

A)对象、消息B)继承、多态C)类、封装D)过程调用

答案:D

知识点:面向对象的程序设计方法、对象、方法、属性及继承与多态性

评析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、

重构软件的方法.面向对象方法从对象出发,发展出对象、类、消息、继承等概念。

(2)下列描述中不正确的是。批注(wlO|:

A)字符型数组中可以存放字符串

B)可以对字符型数组进行整体输入、输出

C)可以对整型数组进行整体输入、输出

D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

答案:C

知识点:对数组的理解

评析:C语言规定只能逐个引用数组元素而不能一次引用整个数组.字符数组的输入、输

出可以将整个字符串一次输入或输出.所以,选项C的说法是不正确的.

<3)以下程序的输出结果是o

main()

{inti,x[3][3]={9,8,7,6,5,434,lh*p=&x(l][U;

for(i=0;i<4;i+=2)printf("%d",p|i]);

A)52B)51C)53D)97

答案C

知识点:通过指针引用数组元素

评析:题中*是指将数组x的数组元素的地址赋值给指针变量p,使p

指向这个数组元素,那么p[0|即为指针变量p当前所指向的数组元素的

值。具体执行时如下所示;

i=0时,输出p[0],也就是x[l][l],输出是5;

i=2时,输出p[2],即p[2+0],也就是x[2][0],输出是3.

<4)以下程序的运行结果是。批注[W11]:

#inckide"sldio.h"

main()

(

inta[]={l,23,45,6,7,8,9,10,ll,12};

int*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n".*p.*q):

}

A)运行后报错B)66C)612D)55

答案:A

知识点:通过指针引用数组

评析:题目中没有给q分配存储单元,只是简单地给它赋了一个值,所以程序的运行结果是

611NULLpointerassignment.也就是运行后报错。

(5)若已定义:inta[9J,*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表

达式是______。批注[w12]:

A)p+1B)a+1C)a++D)++p

答案C

知识点:数组地址的表示

评析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地比值.也不能使

这个指针常量“移动”,指向数组的其他元素。

(6)以下程序的输出结果是.

main()

{inta=-l,b=l,k:

if((++a<0)&&!(b--<=0))

printf("%d%d\nn.a.b);

else

printf("%d%d\n*',b^);

)

A)-11B)01

C)1OD)00

答案C

知识点:if条件的判断

评析:逻辑运算符的优先次序如下:K非)-&&(与)-11(或),但本题需特别注意的是短路的

概念:对于&&运算符,其两边表达式的值只要有一边为假,则整个与运算表达式的值即为

假,系统在执行时,先运算&&左边的表达式,若为假,则系统不会再判断&&运算符右边的

表达式了,直接运用短路原理得整个与运算表达式的值为0,由于++a是先无算后使用,b

--是先使用后运算。所以本题在执行++a后,a值为0,不满足条件,所以a为0,根据

短路原理,1,仍为1,接下去执行else语句,输出10。

<7)以下选项中,能定义s为合法的结构体变量的是。

A)typedefstructabc

{doublea:

charb|10J;

1s;

B)struct

{doublea;

charb|10];

Is;

C)structABC

{doublea;

charb[10];

}

ABCs;

D)typedefABC

{doublea;

charb|10];

}

ABCs;

答案B

知识点:结构体变量的定义

评析:定义一个结构体类型的变量,可采用三种方法:

①先定义结构体类型,再定义变量名;

②在定义类型的同时定义变量;

③直接定义结构类型变量,即不出现结构体名。

选项B符合第三种定义方法。

(8)请读程序:

#include<stdio.h>

#include<string.h>

main()

(

char*sl="AbCdEr',*s2="aB";

sl++;s2++;

printf("%d\n"^»trcmp(sl,s2));

上面程序的输出结果是。

A)正数B)负数C)零D)不确定的值

答案A

知识点:字符串比较函数strcmp()的应用

评析:strcmp(Xl,X2)是串比较函数.当X1>X2时返回值为正数,当XKX2时返回值为

负数,当X1=X2时返回值为零。

本题中“、1”、“立”分别表示这两个申中第个字符的地址,》1++和>2++是将指针指向申的

第二个字符,则*si为“bCdEf”,*s2为“B”。而在字符串比较中,大小的确定是由各个字

符串相应位置字符的ASCII码值的大小决定的,“B”的ASCII码值为66,“b”的ASCII

码值为98,所以sl>s2,返回值为正教。

(9)请读程序:

#include<stdio.h>

func(inta,intb){

intc;

c=a+b;

returnc;

}

main(){

intx=6,y=7,z=8,r:

r=func((x--,y++/+y),z--);

printf("%d\n'',r);

I

上面程序的输出结果是.

A)11B)20021D)31

答案C

知识点:自增、自减运算

评析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的

和,其中(x--,y++,x+y)是一个逗号表达式,它

温馨提示

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

评论

0/150

提交评论