二级C++分类模拟242.docx
- 文档编号:11641936
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:16
- 大小:24.47KB
二级C++分类模拟242.docx
《二级C++分类模拟242.docx》由会员分享,可在线阅读,更多相关《二级C++分类模拟242.docx(16页珍藏版)》请在冰豆网上搜索。
二级C++分类模拟242
二级C++分类模拟242
选择题
1、下列有关类成员的叙述中,错误的是______。
A.友元函数不是类的成员函数 B.类成员的默认访问权限是私有的
C.类成员函数必须声明为公有的 D.类的静态数据成员可以是常成员
2、在对函数进行原型声明时,下列语法成分中不需要的是______。
A.函数返回类型 B.函数参数列表 C.函数名 D.函数体
3、有如下程序:
#include<iostream>
usingnamespacestd;
voidfun(int&x,inty){intt=x;x=y;y=t;}
intmain()
{
inta[2]={1,2};
fun(a[1],a[0]);
std:
:
cout<<a[0]<<","<<a[1]<<std:
:
endl;
return0;
}
执行后的输出结果是______。
A.2,2 B.1,1 C.1,2 D.2,1
4、有如下程序:
#include<iostream>
usingnamespacestd;
classA
{
public:
A(){cout<<"A";}
~A(){cout<<"~A";}
};
classB:
publicA
{
A*P;
public:
B(){cout<<"B";P=newA();}
~B(){cout<<"~B";deleteP;}
};
intmain()
{
Bobj;
return0;
}
执行这个程序的输出结果是______。
A.BAA~A~B~A B.ABA~B~A~A
C.BAA~B~A~A D.ABA~A~B~A
5、下列有关指针的用法中错误的是( )。
A.inti;int*ptr=&i; B.inti;int*ptr;i=*ptr;
C.int*ptr;ptr=0; D.inti=5;int*ptr;*ptr&i;
6、不合法的main函数命令行参数表示形式是
A.main(inta,char*c[]) B.main(intarc,char**arv)
C.main(intargc,char*argv) D.main(intargv,char*argc[])
7、有以下程序:
#include<iostream>
usingnamespacestd;
classR
{public:
R(intr1,intr2)
{R1=r1;
R2=r2;}
voidprint();
voidprint()corist;
private:
intR1,R2;};
voidR:
:
print()
voidR:
:
print()coiist
intmain()
{Ra(5,4);
constRb(20,52);
b.print();
return0;}
执行后的输出结果是______。
A.5,4 B.20,52
C.0,0 D.4,5
8、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是______。
Samplea[2],*p=newSample;
A.0 B.1 C.2 D.3
9、有如下程序:
#include<iostream>
usingnamespacestd;
voidfun(inti){cout<<"/inti";}
voidfun(chare){cout<<"/charc";}
intmain(){
fun(0);
fun('0');
retum0;
}
运行后的输出结果是______。
A./inti/inti B./inti/charc C./charc/inti D./charc/charc
10、在深度为7的满二叉树中,叶子结点的个数为
A.32 B.31 C.64 D.63
11、下列情况中,不会调用拷贝构造函数的是______。
A.用一个对象去初始化同一类的另一个新对象时
B.将类的一个对象赋值给该类的另一个对象时
C.函数的形参是类的对象,调用函数进行形参和实参结合时
D.函数的返回值是类的对象,函数执行返回调用时
12、下列函数模板声明中,合法的是______。
A.template<typenameT>Tabs(Tx);
B.templateclass<T>voidabs(Tx);
C.templateT<classT>abs(Tx);
D.template<typenameT>abs(Tx);
13、下列程序的运行结果为______。
#include<iostream.h>
template<classTT>
classFF
{ TTa1,a2,a3;
public:
FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}
TTSum(){returna1+a2+a3;));
voidmain()
{ FF<int>x(int(1.1),2.3),y(int(4.2),5,6);
cout<<x.Sum()<<''<<y.Sum()<<encIl;}
A.6.115.2 B.615
C.615.2 D.6.115
14、下列说法正确的是______。
A.内联函数在运行时将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
15、下列有关模板的叙述中,正确的是______。
A.函数模板不能含有常规形参 B.函数模板的一个实例就是一个函数定义
C.类模板的成员函数不能是模板函数 D.用类模板定义对象时,绝对不能省略模板实参
16、已知函数模板定义如下:
template<classT>
Tmin(Tx,Ty)
{
returnx<y?
x:
y;
}
下列叙述中,错误的是______。
A.该函数模板有一个模板参数
B.T类型所允许的类型范围应提供有意义的<运算符操作
C.该函数模板生成的模板函数中,参数和返回值的类型可以不同
D.该函数模板可以生成模板函数doublemin(double,double)
17、若有定义语句“inti=2,j=3;”,则表达式i/j的结果是______。
A.0 B.0.7 C.0.66667D.0.66666667
18、在C++中,cin是一个______。
A.类 B.对象 C.模板 D.函数
19、已知Value是一个类,value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原型中,正确的是______。
A.Valueoperator+(Valuev,inti);
B.Valueoperator+(Valuev=value,inti);
C.Valueoperator+(Valuev,inti=0);
D.Valueoperator+(Valuev=value,inti=0);
20、有以下程序
#include<iostream>
usingnamespacestd;
inta;
intfun();
intmain()
{
externinta;
intb;
a=100;
b=fun();
cout<<b<<end1;
return0;
}
intfun{)
{
externinta;
return (10*a;
}
其程序运行后的输出结果是
A.100 B.10 C.1000 D.10000
21、有如下程序:
#include<iostream>
usingnamespacestd;
classBoat;
classCar{
public:
Car(inti):
weight(i){}
friendintTotal(constCar&c,constBoat&b); //①
private:
intweight;
};
classBoat{
public:
Boat(inti):
weight(i){}
friendintTotal(constCar&c,constBoat&b);
private:
intweight;
};
intTotal(constCar&c,constBoat&b){ //②
returnc.weight+b.weight;
}
intmain(){
Carc(10);
Boatb(8);
cout<<"Thetotalweightis"<<Total(c,b)<<endl; //③
return0;
}
下列关于程序的描述中,正确的是______。
A.程序编译正确 B.程序编译时语句①出错
C.程序编译时语句②出错 D.程序编译时语句③出错
22、通过运算符重载,可以改变运算符原有的______。
A.操作数类型 B.操作数个数 C.优先级 D.结合性
23、下列关于goto语句的描述中,正确的是( )。
A.goto语句可在一个文件中随意转向
B.goto语句后面要跟一个它所转向的语句
C.goto语句可以同时转向多条语句
D.goto语句可以从一个循环体内转到循环体外
24、已知在一个类体中包含如下函数原型:
VOLUMEOPERATOR-(VOLUME.const;,下列关于这个函数的叙述中,错误的是______。
A.这是运算符一的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
25、执行语句序列
ofstreamoutfile("data.dat");
if(…)cout<<"ok";elsecout<<"fail";后,如果文件打开成功,显示“ok”,否则显示“fail”。
由此可知,上面if语句的“…”处的表达式是( )。
A.outfile.fail()或outfile B.outfile.good()或!
outfile
C.outfile.good()或outfile D.outfile.fail()或!
outfile
26、类模板的使用实际上是将类模板实例化为一个具体的______。
A.类 B.对象
C.函数 D.模板类
27、软件详细设计产生的图如下:
该图是______。
A.N-S图 B.PAD图
C.程序流程图 D.E-R图
28、若有下列定义
intx[10],*pt=x;
则对x数组元素的正确引用是______。
A.*&x[10] B.*(x+3)
C.*(pt+10) D.pt+3
29、有如下函数模板:
template<classT>Tsquare(Tx){returnx*x;}
其中T是______。
A.函数形参 B.函数实参 C.模板形参 D.模板实参
30、以下程序的结果是( )。
#include<iostream.h>
voidmain()
{char*p="abcdefgh",*r;
long*q;
q=(long*)P;
q++;
r=(char*)q;
cout<<r<<endl;
A.defg B.cdef C.ghab D.efgh
31、下列关于函数参数的叙述中,正确的是______。
A.在函数原型中不必声明形参类型
B.函数的实参和形参共享内存空间
C.函数形参的生存期与整个程序的运行期相同
D.函数的形参在函数被调用时获得初始值
32、软件详细设计产生的图如下:
该图是______。
A.N-S图 B.PAD图
C.程序流程图 D.E-R图
33、下列关于队列的叙述中正确的是______。
A.在队列中只能插人数据
B.在队列中只能删除数据
C.队列是先进先出的线性表
D.队列是先进后出的线性表
34、数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的______。
A.需求分析阶段 B.逻辑设计阶段
C.概念设计阶段 D.物理设计阶段
35、必须用一对大括号括起来的程序段是______。
A.switch语句中的case标号语句 B.if语句的分支
C.循环语句的循环体 D.函数的函数体
36、有以下程序
#include<iostream>
usingnamespacestd;
staticintdays[]={31,28,31,30,31,30,31,31,30,31,30,31};
classdate
{
private:
intmonth,day,year;
public:
date(intm,intd,inty)
{
month=m;
day=d;
year=y;
}
date()
{}
voiddisp()
{
cout<<year<<"-"<<month<<"-"<<day<<end1;
}
dateoperator+(intday)
{
datedt=*this;
day+=dt.day;
while(day>days[dt.month-1])
{
day-=days[dt.month-1];
if(++dt.month==13)
{
dt.month=1;
dt.year++;
}
}
dt.day=day;
returndt;
};
intmain()
{
dated1(6,20,2004),d2;
d2:
d1+20;
d2.disp();
return0;
}
执行后的输出结果是
A.2004-7-10
B.2004-6-20
C.2004-7-20
D.程序编译时出错
37、在深度为5的满二叉树中,叶子结点的个数为( )。
A.31 B.32
C.16 D.15
38、下列运算符中,可以重载为类的友元函数的运算符是______。
A.= B.() C.. D.<<
39、下列函数中对调用它的函数没有起到任何作用的是
A.voidf1(double&x){--x;}
B.doublef1(doublex){returnx-1.5;}
C.voidf3(doublex){--x;}
D.doublef4(double*x){--*x;return*x;}
40、有如下程序:
#include<iostream>
#include<iomanip>
usingnamespacestd;
intmain(){
cout<<setfill('#')<<setw(4)<<"OK"<<123<<endl;
return0;
}
运行这个程序的输出结果是______。
A.##OK123 B.##OK#123
C.OK##123 D.OK##123#
答案:
选择题
1、C
2、D
[解析]函数原型中,函数名、函数返回值、函数参数列表是需要的,而函数体在函数声明时不需要。
所以答案为D。
3、B
[解析]程序中的fun函数的功能是实现函数中两个参数的交换。
主函数中fun的调用中第一个参数为数组第二个值即2,第二个参数为第一个值即1。
在fun的定义中第一个形参引用类型,其改变会改变主函数中实参的值;而第二个形参不是引用类型,其改变不会改变第二个实参,所以2,1的交换结果为1,1,即B。
4、B
[解析]本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。
对象释放时,先执行派生类的析构函数,再执行基类的析构函数。
所以本题答案为B。
5、B
6、C
[解析]在C++语言里,main函数也可以有参数,例如:
main(intarvc,char*argv),argc:
是指向字符串的指针数组,而选项C)是第二个形参是指向字符变量的指针,是错误的。
7、B
[解析]使用const关键字修饰的对象称为常对象,题中对象b被声明为类R的常对象。
使用const关键字说明的成员函数称为常成员函数,类R中用const重载了函数print()。
在使用常对象和常成员函数时应注意的是:
const是函数类型的一个组成部分,因此在常成员函数部分也要带const关键字;常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数;如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数;const关键字可以参与区分重载函数。
8、D
[解析]生成对象,以及动态生成对象空间,都要自动调用构造函数。
9、B
[解析]本题考查的是重载函数的匹配。
在main函数中,fun(0)中的参数是整数0,所以最佳匹配函数是fun(inti),即调用函数fun(inti),输出“/inti”;同样,fun('0')中的参数是字符'0',最佳匹配函数是fun(charc),所以调用函数fun(charc),输出”/charc”,选项B正确;答案为B选项。
10、C
[解析]满二叉树的深度和结点的关系公式为k=log2n+1,则有n=2k-1(n为树结点数,k为树的深度)。
11、B
[解析]此题考查的是复制构造函数的概念。
用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。
因此,选项A、C、D均会调用复制构造函数,而只有选项B没有创建的动作,不调用复制构造函数。
12、A
[解析]声明一个函数模板的格式是:
template<<模板形参表声明>><函数声明>,其中模板形参有三种形式:
<typename参数名>;<class参数名>;<类型修饰参数名>。
函数模板的模板形参表是用尖括号括住的一个或多个模板形参的列表,类型形参必须要有关键字class或typename修饰,选项B错误;函数的返回类型需要放在函数名之前,关键字template和模板形参表之后,选项C错误;函数必须要声明返回类型,选项D错误。
答案为A选项。
13、B
[解析]本题考查模板函数的应用,表达式int(1.1)和int(4.2)是将1.1和4.2强制转换为整型。
14、B
[解析]本题考查的是内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加inline关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。
15、B
[解析]本题考查函数模板和类模板的基础知识,所以本题答案为B。
16、C
[解析]该函数模板有一个模板参数T,选项A正确;由于在函数体中需要比较函数两个参数x、y的大小,所以T类型必须能够提供有意义的<运算符操作,选项
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 分类 模拟 242