C++试题及答案 五Word文件下载.docx
- 文档编号:459626
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:29
- 大小:27.81KB
C++试题及答案 五Word文件下载.docx
《C++试题及答案 五Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++试题及答案 五Word文件下载.docx(29页珍藏版)》请在冰点文库上搜索。
static变量是定义在函数体内的变量,存放在静态存储区,不用栈空间存储,其值并不随存
储空间的释放而消失。
4、假定AB为一个类,则执行“ABa
(2),b[3],*p[4];
”语句时调用该类构造函数的次数
为()
A、3
B、4
C、 5
D、 9
B
a
(2)调用1次带参数的构造函数,b[3]调用3次无参数的构造函数,指针没有给它
分配空间,没有调用构造函数。
因此共调用构造函数的次数为4、
5、 假如表达式++a中的“++”是作为成员函数重载的运算符,若采纳运算符函数调用格式,则
可表示为()
A、a、operator++(1)
B、 operator++(a)
C、operator++(a,1)
D、a、operator++()
D
运算符的重载,前缀先让变量变化、调用++a,等价为a、operator++(),注意无参
的形式、后缀的话a++,等价于a、operator(0),带形参,形参名可省。
6、已知f1与f2是同一类的两个成员函数,但f1不能直截了当调用f2,这讲明()
A、f1与f2都是静态函数
B、f1不是静态函数,f2是静态函数
C、f1是静态函数,f2不是静态函数
D、f1与f2都不是静态函数
C
普通成员函数能够调用静态函数,相反静态函数不能调用普通成员函数,这与普通
函数与常成员函数相同、因此选择C项、
7、一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()
A、内联函数
B、重载函数
C、 递归函数
D、嵌套函数
A
内联函数特征代码少,频繁调用,执行效率高、重载函数解决统一接口的问题;
递
归是子程序调用,程序调用要耗费特不多空间与时间,循环/迭代都比递归有效率得多,递归只是
从形式上,逻辑比较简洁、嵌套函数即反复调用,速度较慢、因此选择A项、
8、 解决定义二义性问题的方法有()
A、 只能使用作用域分辨运算符
B、使用作用域分辨运算符或成员名限定
C、使用作用域分辨运算符或虚基类
D、 使用成员名限定或赋值兼容规则
解决二义性问题主要要两种方法:
(1)赋值兼容规则;
(2)虚基类、
9、在main函数中能够用p、a的形式访问派生类对象p的基类成员a,其中a是()
A、私有继承的公有成员
B、公有继承的私有成员
C、公有继承的保护成员
D、公有继承的公有成员
公有成员能够在类外访问,保护类型成员能够在派生类中访问,但不能在类外访问
在main函数中访问,讲明a是公有成员。
只有公有继承时a才能是公有的,因此D项正确。
10、 在C++中不返回任何类型的函数应该讲明为()
A、 int
B、 char
C、void
D、double
无形参或无返回值都能够用void来声明,int chardouble分不是整型、字符型与实型、
11、若Sample类中的一个成员函数讲明如下:
voidset(Sample&
a),则Sample&a的含义是()
A、 指向类Sample的名为a的指针
B、a是类Sample的对象引用,用来作函数Set()的形参
C、 将a的地址赋给变量Set
D、变量Sample与a按位与的结果作为函数Set的参数
成员函数使用对象的引用作为形参、该函数的功能是将已知对象的所有数据成员的
值拷贝给相应对象的所有数据成员,可不能建立临时对象,这个地方是对象的引用因此选择B、
12、 要实现动态联编必须()
A、 通过成员名限定来调用虚函数
B、通过对象名来调用虚函数
C、通过派生类对象来调用虚函数
D、 通过对象指针或引用来调用虚函数
通过基类指针或基类引用来调用虚函数实现动态多态性,静态多态性通过重载来实
现的。
因此选择D项。
13、在派生类中定义虚函数时,能够与基类中相应的虚函数不同的是()
A、参数类型
B、参数个数
C、函数名称
D、函数体
虚函数在基类与派生类,具有相同的返回类型、形参类型与形参个数,而函数体可
以依照不同的派生类或基类实现不同的操作,即不同函数体、
14、实现两个相同类型数加法的函数模板的声明是()
A、add(Tx,Ty)
B、 Tadd(x,y)
C、Tadd(Tx,y)
D、T add(Tx,Ty)
实现两个相同类型数加法结果应该与操作数具有相同类型。
进行加法运算后结果也
是与参数具有相同类型,需要返回值、A无返回值时要用void,B形参无类型,C形参y没有类型
因此选择D项。
15、下列不是描述类的成员函数的是()
A、 构造函数
B、析构函数
C、友元函数
D、拷贝构造函数
友元函数尽管不是成员函数然而能够访问类所有成员。
构造函数、析构函数与拷贝
构造函数(复制构造函数)都是类的特不函数用于对象的创建与撤销,因此选择C项。
16、继承机制的作用是()
A、信息隐藏
B、数据封装
C、 定义新类
D、数据抽象
面向对象设计中的类的特点:
抽象、封装、继承与多态等,继承用于对类的扩展
因此选择C项。
17、已知:
p是一个指向类A数据成员m的指针,A1是类A的一个对象、假如要给m赋值为5,正确
的是()
A、A1、p=5;
B、A1—〉p=5;
C、A1、*p=5;
D、*A1、p=5;
A中p是指针即地址,错误;
B选项中A1不是指针不能使用指向运算符->,错误
;
“*”比“、”级不要高,因此D选项*A1、p=5相当于(*A1)、p=5;
错误、另外涉及到指向成员函数
时注意以下几点:
指向成员函数的指针必须于其赋值的函数类型匹配的三个方面:
(1)参数类型与个数;
(2)返回
类型;
(3)它所属的类类型。
成员函数指针的声明:
指向short型的Screen类的成员的指针定义如下:
shortScreen:
:
*ps_Screen;
ps_Screen能够用_height的地址初始化如下:
shortScreen:
*ps_Screen=&Screen:
_height;
类成员的指针必须总是通过特定的对象或指向改类型的对象的指针来访问。
是通过使用两个指
向成员操作符的指针(针对类对象与引用的、*,以及针对指向类对象的指针的—>*)、
18、假如采纳动态多态性,要调用虚函数的是()
A、 基类对象指针
B、对象名
C、基类对象
D、派生类名
基类指针或者基类的引用调用虚函数都会产生动态多态性
19、若有以下定义,则讲法错误的是()
inta=100,*p=&a;
A、声明变量p,其中*表示p是一个指针变量
B、变量p经初始化,获得变量a的地址
C、变量p只能够指向一个整型变量
D、 变量p的值为100
指针变量如同其她变量一样,在使用之前必须先声明。
声明指针变量的格式为:
〈类型名>
*<
变量名〉;
其中,〈类型名>
是指针变量所指向对象的类型,它能够是C++语言预定义的类型,也能够是用户
自定义类型、<变量名>
是用户自定义的标识符。
符号*表示<变量>是指针变量、而不是普通变量
*表示指针,p是变量,p指向一个整型的变量,值为a的地址值,*p=100。
20、 C++语言建立类族是通过()
A、 类的嵌套
B、类的继承
C、虚函数
D、抽象类
类族即同一个类派生出来的类,各个类是兄弟或父子关系。
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答
案、错填、不填均无分。
1、假设inta=1,b=2;
则表达式(++a/b)*b——的值为___、
2
[解析]前缀++或――表示先使变量值变化,再使用,这与后缀恰恰相反、然而编译
cout〈〈(++a/b)*b--时,先++a/b值为1,后1*b—-,先取b=2,结果为2,再让b=1。
2、 复制构造函数使用___作为形式参数。
对象的引用
[解析]复制构造函数使用对象的引用来初始化一个新对象,幸免临时产生对象。
3、通过C++语言中的___机制,能够从现存类中构建其子类。
继承
[解析]继承概念,从现有的类生成新类,原有的类称为父类或基类,新类又称子类或派生类或
衍生类,它是对基类的扩充。
4、静态成员函数、友元函数、构造函数与析构函数中,不属于成员函数的是___、
友元函数
[解析]友元函数不是类成员,但能够访问类成员。
类的封装性保证了数据的安全,但引入友元
尽管访问类是方便了,但确实破坏类访问的安全性。
5、 在下面的类定义中,私有成员有___、
classLocation
{intX,Y;
protected:
intzeroX,zerxY;
int SetZero(intzeroX, intzeroY);
private:
int length,height;
public:
voidinit(intinitX,intinitY);
intGetX();
intGetY();
};
X,Y,length,height
6、 在C++程序设计中,建立继承关系倒挂的树应使用___继承。
单
[解析]一个基类能够派生多个子类,一个子类能够再派生出多个子类,如此就形成了一个倒立
的树。
7、C++支持的两种多态性分不是___多态性与运行多态性。
静态或编译
[解析]多态性包括静态(编译时)的与动态(运行时)的动态性、
8、C++中语句constchar* constp=“hello”;
所定义的指针p与它所指的内容都不能被
___、
修改
[解析]使用const修改的内容不能修改,这个地方同时修饰地址与值,表示地址与值都不变。
9、 在C++中,定义虚函数的关键字是___、
virtual
[解析]在普通函数前面用virtual修饰的函数,就称为虚函数。
10、采纳私有派生方式,基类的public成员在私有派生类中是___成员、
私有
11、对赋值运算符进行重载时,应声明为___函数。
类成员
[解析]运算符重载的方法有友元或者成员函数两种途径,然而赋值运算符只能使用成员函数的
方法来实现。
12、 在C++中有两种参数传递方式即值传递与___传递、
引用
[解析]函数参数传递有传值与传引用两种。
13、预处理命令以___符号开头。
operater
[解析]文件包罗、预处理与编译都是以#开头。
14、在构造函数与析构函数中调用虚函数时采纳___。
静态联编
[解析]在析构或构造函数调用虚函数发生静态多态性、
15、C++是通过引用运算符___来定义一个引用的。
&
[解析]引用是C不具有使用方法,它表示变量的不名,在函数中使用特不频繁,因为调用形式同
传值调用,但修改形参实参也会相应改变的特征。
16、 假如要把类B的成员函数voidfun()讲明为类A的友元函数,则应在类A中加入语句___。
friendvoidB:
fun();
[解析]声明成员函数作为另外一个类的友元函数时,使用类作用域运算符:
、
17、假如要把PI声明为值为3、14159类型为双精度实数的符号常量,该声明语句是___、
)constdoublePI(3、14159);
或者constdouble PI=3、14159;
[解析]使用const声明符号常量,常量与常量值能够用括号也能够赋值号。
18、在C++四个流对象中,___用于标准屏幕输出。
cout
[解析]cin、cout、cerr与clog中cin用于输入,cout用于输出,cerr、clog错误处理。
19、 执行下列代码
inta=32;
doublec=32;
cout、setf(ios:
hex);
cout〈〈”hex:
a=”〈<
a〈〈”,c=”〈〈c〈〈endl;
cout、unsetf(ios:
hex);
程序的输出结果为___、
hex:
a=20,c=32
[解析]用十六进制只能输出整型数据,而不能将其它类型数据转换成十六进制的数据输出。
所
以double类型不变仍然是32(double类型)、
20、 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。
ector<
int>
V2(V1);
[解析]采纳向量初始化另一个向量的形式:
vector <
type>
name1(name);
三、改错题(本大题共5小题,每小题4分,共20分)
1、 #include〈iostream、h〉
class A
{ private:
intx;
public:
A(inti){x=i;
}
A(){x=0;
friendint min(A&,A&
);
intmin(A&
a,A&
b)
{return(a、x>b、x)?
a、x:
b、x;
void main()
{Aa(3),b(5);
cout<
〈a、min(a,b)〈<endl;
cout〈〈a、min(a,b)〈〈endl;
友元函数不是类成员,因此对象a不能使用a、min(a,b)这种方法
、min就是一个普通的友元函数。
[修改]cout<〈min(a,b)<
〈endl;
2、#include<iostream、h〉
class shape
{public:
virtual intarea(){return0;
}
};
class rectangle:
publicshape
{public:
inta,b;
void setLength(int x,inty){a=x;
b=y;
intarea(){return a*b;
voidmain()
{rectangler;
r、setLength(3,5);
shapes1,*s2=&
r;
cout〈<
r、area()〈<
endl;
s2=s1;
cout〈〈s2、area()〈<
shape s1,*s2=r;
指针使用错误。
s是指针使用它指向对象的成员有两种方法,有下面两行
可知,使用的是引用、
[修改]改为shape&
s=r;
3、下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见、
#include 〈iostream、h>
template〈classT〉
class A
{private:
T x,y,s;
public:
A(Ta,Tb)
{x=a,y=b;
s=x+y;
voidshow()
{cout<〈"x+y="<〈s〈<
endl;
voidmain()
{A〈int>add(10,100);
add、show();
[修改]A 〈int〉add(10,100);
[解析]A add(10,100);
类模板的使用,参数实例化后生成模板类。
用类模板定义对象时要指定
参数类型、
4、生成具有n个元素的动态数组、
#include <
iostream、h〉
void main()
{int n;
cin〉〉n;
int a[n];
a[0]=2;
cout〈<a[0]<
int a[n];
生成具有n个元素的动态数组,要使用new,因此inta[n];
错误、
[修改]int*a=newint[n];
5、#include <
iostream、h〉
classA
{inti;
public:
virtual voidfun()=0;
A(inta)
{i=a;
classB:
publicA
{intj;
public:
voidfun()
{cout〈<"
B:
fun()\n”;
}
B(int m,int n=0):
A(m),j(n){}
void main()
{A*pa;
Bb(7);
pa=&b;
B(int m,intn=0):
A(m),j(n){}因为基类是抽象类,不能被实例化,因此在派生类中不能
调用初始化基类对象。
因此B(intm,intn=0):
A(m),j(n){}错误,删去A(m)、
[修改]B(int m,int n=0):
j(n){}
四、完成程序题(本大题共5小题,每小题4分,共20分)
1、 在下面程序横线处填上适当字句,以使该程序执行结果为:
50434 21 10
07、18、19、110、111、1
#include 〈iostream、h〉
template<
class T>
voidf(__________)
{__________;
for (inti=0;
i<
n/2;
i++)
t=a[i],a[i]=a[n—1—i], a[n—1-i]=t;
voidmain()
{int a[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〈<a[i]〈〈””;
cout<〈endl;
for (i=0;
i〈6;
cout 〈〈d[i]<<
"";
cout<<
endl;
Ta[],intn,Tt=0;
[解析]不同的数据类型的调用,使用了模板。
f函数增加t变量,因为实参类型不同,因此t的
类型应该是T类型的。
2、完成下面类中成员函数的定义。
#include<iostream、h>
#include<
iomanip、h>
class Arr
{protected:
float*p;
intn;
//数组大小(元素个数)
public:
Arr(int sz=10)
{ n=sz;
p=newfloat[n];
~Arr(void)
{
_________
intGetn(void)const
{
returnn;
float &
operator[](int i)
________
voidPrint();
void Arr:
Print()
{int i;
for(i=0;
this->
Getn();
i++)
{if (i%10==0)
cout<〈endl;
cout<
<setw(6)<
<p[i];
cout〈<
endl;
void main()
{Arr a(20);
for (inti=0;
i<
a、Getn();
i++)
a[i]=i* 2;
a、Print();
delete p;
returnp[i];
[解析]在析构函数中释放对象空间。
第二个是对[]运算符的重载,函数返回类型是实型,形
参i,取得下标为i的元素的值、
3、下面是一个输入半径,输出其面积与周长的C++程序,在下划线处填上正确的语句、
#include 〈iostream>
_________;
_________;
voidmain()
{double rad;
cout<
〈"rad=”;
cin>〉rad;
double l=2、0*pi*rad;
doubles=pi*rad*rad;
cout〈〈”\nThelong is:
"
<<l〈<endl;
cout〈<
”The areais:
”<
〈s<<
endl;
usingnamespace std,#definepi 3、14159
[解析]进行输入或输出要引入iostream, 因此usingnamespacestd;
从标点看没有分号,因此
使用宏定义,#definepi3、14159、
4、在下划线处填上缺少的部分、
#include 〈iostream、h>
class Samp
{public:
void Setij(inta,intb){i=a,j=b;
~Samp()
{cout〈〈"Destroying、、"
<〈i<〈endl;
intGetMuti(){returni*j;
protected:
inti;
intj;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+试题及答案 C+ 试题 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)