试题8.docx

上传人:b****5 文档编号:12364777 上传时间:2023-04-18 格式:DOCX 页数:16 大小:19.33KB
下载 相关 举报
试题8.docx_第1页
第1页 / 共16页
试题8.docx_第2页
第2页 / 共16页
试题8.docx_第3页
第3页 / 共16页
试题8.docx_第4页
第4页 / 共16页
试题8.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

试题8.docx

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

试题8.docx

试题8

一、选择(在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)以上的没有正确的

二.填空(22分)

1.写出下面程序的输出(3分)

inta=2;

voidmain()

{intb=2,c=3;

++a;

c+=++b;

if(++a||++b||++c)

cout<<”first:

”<

{inta=3,c;

c=b*3;

a+=c;

cout<<”second:

”<

}

a+=c;

cout<<”third:

”<

cout<<’‘<

}

2.有下面的程序(输出的空格用_代表,如__123表示占五位,右对齐,2分)

#include

#include

voidmain()

{inti=11;

char*p="ThisC++test\n";

//cout.flags(ios:

:

uppercase);

cout<

cout<

cout<

}

3.有下面的程序,输出为:

(2分)

#include

classcolor{

public:

virtual~color(){cout<<”color”<

};

classred:

publiccolor{

public:

~red(){cout<<”red”<

};

classbrightred:

publicred{

public:

~brightred(){cout<<”brightred”<

};

voidmain(void){

color*pa=newbrightred;

deletepa;

}

问:

程序能否正确执行?

若能结果是什么?

不能则原因是什么?

4.将上题中标有//A的行中的virtual去掉,则程序的结果又如何?

(1分)

5.程序(2分)

#include

voidmain(){

fstreaminfile,outfile;

charch;

infile.open("file1.txt",ios:

:

in);

outfile.open("file2.txt",ios:

:

out);

while(infile.get(ch))

if(ch>='A'&&ch<='Z')

outfile.put(ch);

infile.close();

outfile.close();

}

设在缺省目录下有文件file1.txt,

没有文件file2.txt,文件file1.txt中有

如下内容:

aAbc123Bce

问执行上述程序后file1.txt,file2.txt中

的内容是什么?

6.程序的输出是(2分)

#include

voidrecu(charc)

{

cout<

if(c<’5’)recu(c+1);

cout<

}

voidmain()

{

recu(‘0’);

}

7.程序的输出是:

#include

intfun1(intx){returnx+1;}

intfun2(intx){returnx*x;}

intfun(int(*f)(int),intn){

for(inti=1,sum=0;i<=n;i++)

sum+=f(i);

returnsum;

}

voidmain(void)

{cout<

cout<

}

8.下面程序的输出是

#include

#include

classString{

charstr[81];

public:

String(char*p){strcpy(str,p);}

String(){str[0]='\0';}

String&operator=(String);

friendStringoperator+(String&,String&);

friendostream&operator<<(ostream&,String&);

}; 

String&String:

:

operator=(Stringp){

strcpy(str,p.str);

return*this;

}

Stringoperator+(String&st1,String&st2){

Stringtmp;

strcpy(tmp.str,st1.str);

strcat(tmp.str,st2.str);

returntmp;

}

ostream&operator<<(ostream&os,

String&str)

{os<

returnos;

}

voidmain(void)

{Stringa("This"),b("C++"),c(“test.”),d;

d=a+b+c;

cout<

}

9.下面程序中编译有错误的语句的标号为__________(2分)

#include

classD{intx,y;

public:

D(inta,intb=0)

{x=a;y=b;cout<<"a"<

D(inta)

{x=a,y=0;cout<<"b"<

voidSetXY(inta,intb){x=a,y=b};//C

intGetX(){returnx;}//D

intGetY(){returny;}//E

};

voidmain()

{Da(3,3);//F

Db(9);//G

cout<

}

其错误原因是:

______________________

10.下面程序依据的数学公式是:

#include

voidmain(void)

{intx,y;

cout<<"Inputx:

"

cin>>x;

switch(x/20)

{case1:

y=x+6;break;

case2:

y=9*x;break;

case3:

y=x+20;break;

default:

y=x;

}

cout<

}

三..根据题目要求完善程序

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

intsum(intn)

{

if(________)return1;

elsereturn_______;

}

2.下述程序中函数delstr的功能是:

将字符串str中所有出现的子串str1全部删除。

#include

#include

char*delstr(char*str,char*str1)

{char*p,*p1,*q1;

inti;

if(*str=='\0'||*str1=='\0')

returnstr;

p=str;

while(*p!

='\0')

{p1=p,q1=str1;

while(*p1==*q1&&*q1!

='\0')

_______;

if(p!

=p1&&*q1=='\0')

{for(i=0;*p1!

='\0';i++,p1++)

___=*p1;

_____='\0';

}

p++;

}

return___;

}

voidmain(void)

{

charline[80]="Iamastudent.\

Youareastudenttoo.";

cout<

cout<<'\n';

}

3.若一链表,每次插入数据时结点总加在链首(即总是作为第一个结点加入),现有函数Push,完成插入数据x。

链表结点结构如下:

structNode{

intdata;

Node*next;};

链表头指针为top,在链空时top为NULL。

试完成下述填空(注:

NULL是C++中的宏定义#defineNULL0,所以NULL等于0)。

voidPush(Node*&top,intx)

{

Node*p;

p=____;

p->data=___;

p->next=__;

__=p;

}

四.根据要求写出程序

1.平面上的点可用坐标(x,y)表示,试用C++设计一个Point类(4分),

其要求为:

(1)私有数据为点坐标(x,y),用整型数表示;

(2)类对外的接口有:

给定一对整型数(a,b),置点坐标(x,y);可取坐标x;可取坐标y;可从标准输出设备输出对象的坐标;

(3)在定义一个Point类的对象时,可用给定的数据初始化(x,y);若没有给出初始化数据,则(x,y)为(0,0)。

2.有函数f(n,k)=1k+2k+┅+nk,试写出程序(6分)

要求:

n,k由键盘读入,为方便,n,k及函数的结果用整型。

3.写一函数完成乘法九九表的输出,格式为:

(6分)

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

当前位置:首页 > 自然科学 > 物理

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

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