C++模拟题5.docx

上传人:b****5 文档编号:29682927 上传时间:2023-07-26 格式:DOCX 页数:17 大小:20.45KB
下载 相关 举报
C++模拟题5.docx_第1页
第1页 / 共17页
C++模拟题5.docx_第2页
第2页 / 共17页
C++模拟题5.docx_第3页
第3页 / 共17页
C++模拟题5.docx_第4页
第4页 / 共17页
C++模拟题5.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C++模拟题5.docx

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

C++模拟题5.docx

C++模拟题5

C++程序设计模拟试卷(五)

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.静态成员函数没有(B)

A.返回值

B.this指针

C.指针参数

D.返回类型

2.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管

理操作的函数是(C)

A.友元函数

B.虚函数

C.构造函数

D.析构函数

3.所有在函数中定义的变量,都是(B)

A.全局变量

B.局部变量

C.静态变量

D.寄存器变量

4.假定AB为一个类,则执行“ABa

(2),b[3],*p[4];”语句时调用该类构造函数的次数

为(B)

A.3

B.4

C.5

D.9

5.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则

可表示为(B)

A.a.operator++

(1)

B.operator++(a)

C.operator++(a,1)

D.a.operator++()

6.已知fl和f2是同一类的两个成员函数,但fl不能直接调用f2,这说明(C)

A.fl和f2都是静态函数

B.fl不是静态函数,f2是静态函数

C.fl是静态函数,f2不是静态函数

D.fl和f2都不是静态函数

7.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为(A)

A.内联函数

B.重载函数

C.递归函数

D.嵌套函数

8.解决定义二义性问题的方法有(B)

A.只能使用作用域分辨运算符

B.使用作用域分辨运算符或成员名限定

C.使用作用域分辨运算符或虚基类

D.使用成员名限定或赋值兼容规则

9.在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中&是(D)

A.私有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.公有继承的公有成员

10.在C+冲不返回任何类型的函数应该说明为(C)

A.int

B.char

C.void

D.double

11.若Sample类中的一个成员函数说明如下:

voidset(Sample&a),则Sample&a的含义是(B)

A.指向类Sample的名为a的指针

B.a是类Sample的对象引用,用来作函数Set()的形参

C.将a的地址赋给变量Set

D.变量Sample与a按位与的结果作为函数Set的参数

12.要实现动态联编必须(B)

A.通过成员名限定来调用虚函数

B.通过对象名来调用虚函数

C.通过派生类对象来调用虚函数

D.通过对象指针或引用来调用虚函数

13.在派生类中定义虚函数时,可以与基类中相应的虚函数不同的是(B)

A.参数类型

B.参数个数

C.函数名称

D.函数体

14.实现两个相同类型数加法的函数模板的声明是(D)

A.add(Tx,Ty)

B.Tadd(x,y)

C.Tadd(Tx,y)

D.Tadd(Tx,Ty)

15.下列不是描述类的成员函数的是(C)

A.构造函数

B.析构函数

C.友元函数

D.拷贝构造函数

16.继承机制的作用是(C)

A.信息隐藏

B.数据封装

C.定义新类

D.数据抽象

17.已知:

p是一个指向类A数据成员mfi勺指针,A1是类A的一个对象。

如果要给m赋值为5,正确

的是(C)

A.A1.p=5;

B.A1->p=5;

C.A1.*p=5;

D.*A1.p=5;

18.如果采用动态多态性,要调用虚函数的是()

A.基类对象指针

B.对象名

C.基类对象

D.派生类名

19.若有以下定义,则说法错误的是(B)

inta=100,*p=&a;

A.声明变量p,其中*表示p是一个指针变量

B.变量p经初始化,获得变量a的地址

C.变量p只可以指向一个整型变量

D.变量p的值为100

20.C++语言建立类族是通过(B)

A.类的嵌套

B.类的继承

C.虚函数

D.抽象类

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。

错填、不填均无分。

1.假设inta=1,b=2;则表达式(++a/b)*b--的值为_2__。

2.复制构造函数使用_构造函数__作为形式参数。

3.通过C++语言中的—继承―机制,可以从现存类中构建其子类。

4.静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是_友元函数_。

5.在下面的类定义中,私有成员有_X,Y_length,height;_。

classLocation

{intX,Y;

protected:

intzeroX,zerxY;

intSetZero(intzeroX,intzeroY);

private:

intlength,height;

public:

voidinit(intinitX,intinitY);

intGetX();

intGetY();

};

6.在C++程序设计中,建立继承关系倒挂的树应使用—单继承_继承。

7.C++支持的两种多态性分别是—静态_多态性和运行多态性。

8.C++中语句constchar*constp=“hello”;所定义的指针p和它所指的内

容都不能被—赋值_。

9.在C+冲,定义虚函数的关键字是_virteor_。

10.采用私有派生方式,基类的public成员在私有派生类中是—私有―成员。

11.对赋值运算符进行重载时,应声明为」nline_函数。

12.在C++中有两种参数传递方式即值传递和—引用—传递。

13.预处理命令以_#define_符号开头。

14.在构造函数和析构函数中调用虚函数时采用_构造函数_。

15.C++是通过引用运算符_来定义一个引用的。

16.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中

加入语句_friendvoidB:

:

fun();_。

17.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语

句是_constdoublePI3.14159_。

18.在C++四个流对象中,_cout_用于标准屏幕输出。

19.执行下列代码

inta=32;

doublec=32;

cout.setf(ios:

:

hex);

coutvv"hex:

a="v

cout.unsetf(ios:

:

hex);

程序的输出结果为_hex:

a=20_,c=30_。

20.已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是

vetiror(20)。

三、改错题('本大题共5小题,每小题4分,共20分)

1.#include

classA

{private:

public

intx;

public:

A(inti){x=i;}

A(){x=0;}

friendintmin(A&,A&);

};

intmin(A&a,A&b)

{return(a.x>b.x)?

a.x:

b.x;

}

voidmain()

{Aa(3),b(5);

cout<

}

2.#include

classshape

{public:

virtualintarea(){return0;}

};

classrectangle:

publicshape

{public:

inta,b;

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

intarea(){returna*b;}

};

voidmain()

{rectangler;r.setLength(3,5);

shapes1,*s2=&r;

cout<

s2=s1;

cout<

}

3.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见

#include

template

classA

{private:

Tx,y,s;

public:

A(Ta,Tb)

{x=a,y=b;s=x+y;}

voidshow()

{cout<<"x+y="<

}

};

voidmain()

{Aadd(10,100);

add.show();

}

4.生成具有n个元素的动态数组。

#include

voidmain()

{intn;cin>>n;inta[n];a[0]=2;cout<

}

5.#includeclassA

{inti;public:

virtualvoidfun()=0;

A(inta)

{i=a;}};

classB:

publicA

{intj;public:

voidfun()

{cout«"B:

:

fun()\n";}B(intm,intn=0):

A(m),j(n){}};

voidmain(){A*pa;

Bb(7);

pa=&b;

}

四、完成程序题(本大题共5小题,每小题4分,共20分)

1.在下面程序横线处填上适当字句,以使该程序执行结果为:

504342110

07.18.19.110.111.1#includetemplatevoidf(___Ta[],_int_n)

{;

for(inti=0;i

t=a[i],a[i]=a[n-1-i],a[n-1-i]=t;

}

voidmain()

{inta[5]={10,21,34,4,50};

doubled[6]={11.1,10.1,9.1,8.1,7.1};

f(a,5);f(d,6);

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

cout<

cout<

for(i=0;i<6;i++)

cout<

cout<

}

2.完成下面类中成员函数的定义

#include

#include

classArr

{protected:

float*p;

intn;//数组大小(元素个数)public:

Arr(intsz=10)

{n=sz;

p=newfloat[n];

}

~Arr(void)

{

delete[]p;

}

intGetn(void)const

{

returnn;

}

float&operator[](inti)

{}

voidPrint();

};

voidArr:

:

Print()

{inti;

for(i=0;iGetn();i++)

{if(i%10==0)

cout<

cout<

}

voidmain()

{Arra(20);

for(inti=0;i

a[i]=i*2;

a.Print();

}

3.下面是一个输入半径,输出其面积和周长的C++S序,在下划线处填上正确

的语句。

#include

__usingnamespacestd;;

__constdoublepi3.14159;

voidmain()

{doublerad;

cout<<"rad=";

cin>>rad;

doublel=2.0*pi*rad;

doubles=pi*rad*rad;

cout«"\nThelongis:

"<

cout<<"Theareais:

"<

4.在下划线处填上缺少的部分。

#include

classSamp

{public:

voidSetij(inta,intb){i=a,j=b;}

~Samp()

{cout<<"Destroying.."<

intGetMuti(){returni*j;}

protected:

inti;

intj;

};

intmain()

{Samp*p;

p=newSamp[5];

if(!

p)

{cout

return1;

}

for(intj=0;j<5;j++)

p[j].Setij(j,j);

for(intk=0;k<5;k++)

cout<<"Muti["<

"<

___p.GetMuti();

return0;

}

5.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

11,10

13,12

#includeclassA

{inta;

public:

A(inti=0){a=i;}

intGeta(){returna;}

voidshow(){cout<

};classB

{Aa;

intb;

public:

B(inti,intj)__:

A_(inti=0)

{}

voidshow(){cout<

};

voidmain()

{Bb[2]={B(10,11),B(12,13)};

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

__b.show();

}

五、程序分析题(本大题共2小题,每小题5分,共10分)

1.给出下面程序输出结果。

#include

classBase

{private:

intY;

public:

Base(inty=0){Y=y;cout

~Base(){cout«"~Base()\n";}

voidprint(){cout<

classDerived:

publicBase

{private:

intZ;

public:

Derived(inty,intz):

Base(y)

{Z=z;

cout<<"Derived("<

}

~Derived(){cout<<"〜Derived。

\n";}voidprint()

{Base:

:

print();

cout<

}

};

voidmain()

{Derivedd(10,20);

d.print();

}

2.给出下面程序输出结果。

#includeclasstest

{intx;

public:

test(inti=0):

x(i){}

virtualvoidfun1()

{cout<<"test:

:

x"<

};

classft:

publictest

{inty;

public:

voidfun1(){cout<<"ft:

:

y="<

ft(inti=2):

test(i),y(i){}

};

voidmain()

{ftft1(3);

void(test:

:

*p)();p=test:

:

fun1;

(ft1.*p)();

}

六、程序设计题(本大题共1小题,共10分)

1.求n(n=3)个学生的最高分和最低分及姓名,已有student类声明和main函数,完成

student类的实现部分。

#include

#include

classstudent

{charname[10];

intdeg;

public:

student(charna[]="",intd=0);

char*getname();

friendintcompare(student&s1,student&s2);

intgetdeg();

};

voidmain()

{studentst[]={student(”王强",74),student(”李刚",68),student(”张雪

",84)};

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

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

{if(compare(st[max],st[i])==-1)

max=i;

if(compare(st[min],st[i])==1)

min=i;

}亠

coutvv"最高分:

"<

"<

"<<(*(st+min)).getdeg()<<"姓名:

"<

[max].getname()«endl;

}

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

当前位置:首页 > 人文社科

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

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