二级C++笔试339.docx
《二级C++笔试339.docx》由会员分享,可在线阅读,更多相关《二级C++笔试339.docx(19页珍藏版)》请在冰点文库上搜索。
![二级C++笔试339.docx](https://file1.bingdoc.com/fileroot1/2023-7/15/d248b126-6b33-4451-ad03-ba7f690b9abb/d248b126-6b33-4451-ad03-ba7f690b9abb1.gif)
二级C++笔试339
二级C++笔试-339
(总分:
100.00,做题时间:
90分钟)
一、选择题(总题数:
35,分数:
70.00)
1.在C++中,打开一个文件,就是将这个文件与一个()建立关联,关闭一个文件,就是取消这种关联。
(分数:
2.00)
A.类
B.流 √
C.对象
D.结构
解析:
2.已知:
inta,b;下列switch语句中,()是正确的。
(分数:
2.00)
A.switdh(a)
casea:
a++;break;
caseb:
b++;break;
B.switch(a+b)
case1:
a+b;break;
case1:
a-b
C.switch(a*a)
case1,2:
++a;
case3,4:
++b:
D.switch(a/10+b)
cases5:
a/5:
break:
default:
a+b;
√
解析:
3.()不是构造函数的特征。
(分数:
2.00)
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明 √
解析:
4.以下只有在使用时才为该类型变量分配存储单元的存储类型说明是()。
(分数:
2.00)
A.auto和static
B.auto和register √
C.register和static
D.extern和register
解析:
5.已知类X成功地重载了--、=、+、和[]这几个运算符,则其中肯定属于成员函数的运算符是()。
(分数:
2.00)
A.+和=
B.[]和后置--
C.=和[] √
D.前置--和[]
解析:
6.类模板的模板参数()。
(分数:
2.00)
A.只可作为数据成员的类型
B.只可作为成员函数的返回类型
C.只可作为成员函数的参数类型
D.以上三者皆可 √
解析:
7.定义如下变量:
charone_char,则语句cin>>one_char等价于C语言中的()语句。
(分数:
2.00)
A.printf(one_char);
B.prinft("%c",one_char);
C.scanf(one_char);
D.scanf("%c",&one_char); √
解析:
8.C++中运算符优先级由高到低排列正确的是()。
(分数:
2.00)
A.:
:
+++// √
B.<*//
C.sizeof%+:
:
D.,&&newsizeof
解析:
9.下面关于构造函数和析构函数的描述中,错误的是()。
(分数:
2.00)
A.析构函数可以声明为虚函数
B.对虚析构函数的调用可以采用动联编
C.一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响
D.构造函数可以声明为虚函数 √
解析:
10.关于read()函数的下列描述中,正确的是()。
(分数:
2.00)
A.该函数只和来从键盘输入中获取字符串
B.该函数所获取的字符多少是不受限制的
C.该函数只能用于文本文件的操作中
D.该函数只能按规定读取所指定的字符数 √
解析:
11.如果x=0,那么while(true)中的true与下面的条件()等价。
(分数:
2.00)
A.X=1 √
B.X==1
C.X>1
D.X<1
解析:
12.下面程序的结果为()。
#include"iostream.h"
voidchange(inta,intb)
inttemp;
temp=a;
a=b;
b=temp:
voidmain()
intm,n;
m=8;
n=9;
change(m,n):
cout<<m<<""<<n<<endl;
(分数:
2.00)
A.89 √
B.98
C.程序有错误
D.99
解析:
13.如果一个类至少有一个纯虚函数,那么就称该类为()。
(分数:
2.00)
A.抽象类 √
B.虚基类
C.派生类
D.以上都不对
解析:
14.下列关于C++函数的描述中正确的是()。
(分数:
2.00)
A.主函数是程序的入口,它由用户定义的函数调用
B.函数在调用之前必须先被声明 √
C.每个用户定义函数只能被其他函数调用一次
D.函数是C++中面向对象程序设计框架的基本组成单元
解析:
15.下列函数中,()是对文件进行写操作的。
(分数:
2.00)
A.get()
B.read()
C.seekg()
D.put() √
解析:
16.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。
(分数:
2.00)
A.与虚基类下面的派生类个数有关
B.多次
C.两次
D.一次 √
解析:
17.列对派生类的描述中,错误的是()。
(分数:
2.00)
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的缺省继承方式是private
D.派生类只继承了基类的公有成员和保护成员 √
解析:
18.对以下说明语句的正确理解是()。
inta[1]=6,7,8,9,10;
(分数:
2.00)
A.将5个初值依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4] √
C.将5个初值依次赋给a[6]至a[10]
D.因为数组长度与初值的个数不相同,所以此语句不正确
解析:
19.下面关于C++语言变量的叙述错误的是()。
(分数:
2.00)
A.C++语言中变量分为auto,static,extern和register四种存储类型
B.自动变量和外部变量的作用域为整个程序 √
C.内部静态变量的作用域是定义它的函数
D.外部静态变量的作用域是定义它的文件
解析:
20.while和do-while循环的主要区别是()。
(分数:
2.00)
A.do-while的循环体至少无条件执行一次 √
B.while的循环控制条件比do-while的循环控制条件更严格
C.do—while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
解析:
21.下列程序中,划线处正确的语句是()。
#include<iostream.h>
ClassBase
Public:
Voidfun()cout<<"Base:
:
fun"<<endl;
;
ClassDerived:
publicBase
voidfun()
______//显示调用基类的函数fun()
Cout<<"Derived:
:
fun"<<endl;
;
(分数:
2.00)
A.fun()
B.Base.fun()
C.Base:
:
fun() √
D.Base->fun();
解析:
22.类MyClass的定义如下:
class MyClass
public:
MyClass()
MyClass(inti)value=newint(i);
int*value;
;
若要对value赋值,则下面语句正确的是()。
(分数:
2.00)
A.MyClassmy;my.value=10;
B.MyClassmy;*my;*value=10;
C.MyClassmy;my.*value=10;
D.MyClassmy(10); √
解析:
23.对于拷贝初始化构造函数,正确的描述是()。
(分数:
2.00)
A.在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数 √
B.必须为每个类定义拷贝初始化构造函数
C.如果要使用拷贝初始化构造函数,则必须在类中先定义
D.当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造函数
解析:
24.在下面四个选项中,()是用来声明虚函数的。
(分数:
2.00)
A.virtual √
B.public
C.using
D.false
解析:
25.有关类和对象的说法不正确的是()。
(分数:
2.00)
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象 √
D.类与对象的关系和数据类型和变量的关系相似
解析:
26.在计算机中,算法是指()。
(分数:
2.00)
A.加工方法
B.解题方案的准确而完整的描述 √
C.排序方法
D.查询方法
解析:
27.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()。
(分数:
2.00)
A.ABoperator+(AB&a,AB&B)
B.ABperator+(AB&) √
C.opetator+(ABa)
D.AB&operator+()
解析:
28.以下程序的输出结果是()。
#include<iostream.h>
voidmain()
inti,j,x=0;
fof(i=0;i<2;i++=
x++;
for(j=0;j<3;j++=
if(j%2)continue:
x++;
x++;
cout<<"x="<<x;=
(分数:
2.00)
A.x=4
B.x=8 √
C.x=6
D.x=12
解析:
29.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
(分数:
2.00)
A.函数调用可以作为独立的语句存在
B.函数调用可以无返回值
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参 √
解析:
30.下列对类的构造函数和析构函数的描述中,正确的是()。
(分数:
2.00)
A.构造函数可以重载,析构函数不能重载 √
B.构造函数不能重载,析构函数可以重载
C.构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载
解析:
31.有如下程序:
#include<iostream>
usingnamespacestd;
classXX
protected;
intk;
public:
XX(intn=5):
k(n)
~XX()cout<<"XX";
Virtualvoidf()cons=0;
;
inlinevoidXX:
:
f()constcout<<k+3;
classYY:
publicXX
public:
~YY()cout<<"YY";
voidf()constout<<k-3;XX:
f();
;
intmain()
XX&p:
*newYY,
p.f();
delete&p;
return0;
;
执行上面的程序将输出()。
(分数:
2.00)
A.28XX √
B.28YYXX
C.-33XX
D.-33XXYY
解析:
32.关于成员函数特征的下述描述中,()是错误的。
(分数:
2.00)
A.成员函数一定是内联函数 √
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
解析:
33.关于友元的概念错误的是()。
(分数:
2.00)
A.友元函数没有this指针
B.调用友元函数时必须在它的实参中给出要访问的对象
C.一个类的成员函数也可以作为另一个类的友元函数
D.只能在类的公有段声明友元 √
解析:
34.一个()允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值能取任意数据类型。
(分数:
2.00)
A.函数模板
B.模板函数
C.类模板 √
D.模板类
解析:
35.下面的叙述中,不符合赋值兼容规则的是()。
(分数:
2.00)
A.派生类的对象可以赋值给基类的对象
B.基类的对象可以赋值给派生类的对象 √
C.派生类的对象可以初始化基类的引用
D.派生类的对象的地址可以赋值给指向基类的指针
解析:
二、填空题(总题数:
15,分数:
30.00)
36.以下程序的执行结果是______。
#include<iostream.h>
voidmain()
intx=5y=2;
cout<<!
(y==x/2)<<",";
cout<<(y!
=x%3)<<",";
cout<<(x>0&&y<0=<<",";
cout<<(x!
=y||x>=y)<<endl;
(分数:
2.00)
填空项1:
__________________ (正确答案:
0,0,0,1)
解析:
37.若要打开二进制文件binfile写方式,输出到文件尾则应为:
ofstreambfile("binfile",______);
(分数:
2.00)
填空项1:
__________________ (正确答案:
ios:
:
out|ios:
:
ate)
解析:
38.头文件1中包含了处理用户控制的文件操作所需的信息。
(分数:
2.00)
填空项1:
__________________ (正确答案:
fstream.h)
解析:
39.C++在重载运算将中,如用成员函数重载一元运算符参数表中需要______个参数,如用友元函数重载一元运算符参数表中需要______个参数。
(分数:
2.00)
填空项1:
__________________ (正确答案:
01)
解析:
40.一个类中有1个析构函数。
(分数:
2.00)
填空项1:
__________________ (正确答案:
1)
解析:
41.有如下的程序:
#include<iostream>
usingnamespacestd;
classAT
friendostream&operator<<(ostream&,AT);
at;
ostream&operator<<(ostream&os,AT)returnos<<'@';
intmain()
cout<<"MyHome"<<at<<"isH";
执行上面的程序将输出______。
(分数:
2.00)
填空项1:
__________________ (正确答案:
Myhome@isH)
解析:
42.对基类数据成员的初始化必须在派生类构造函数中的1处执行。
(分数:
2.00)
填空项1:
__________________ (正确答案:
成员初始化列表)
解析:
43.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、1和选择排序等。
(分数:
2.00)
填空项1:
__________________ (正确答案:
交换排序)
解析:
44.有如下程序:
#include<iostream>
usingnamespacestd;
template<typenameT>
Ttotal(T*data)
Ts=0;
While(*data)s+=*data++;
returns;
intmain()
intx[]:
2,4,6,8,10,12,14,16,18;
cout<<total(x);
return0;
执行上面程序的输出是______。
(分数:
2.00)
填空项1:
__________________ (正确答案:
20)
解析:
45.1 使一个函数可以定义成对许多不同数据类型完成同一个任务。
(分数:
2.00)
填空项1:
__________________ (正确答案:
函数模板)
解析:
46.operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为1 的。
(分数:
2.00)
填空项1:
__________________ (正确答案:
public)
解析:
47.类继承中,缺省的继承方式是1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
私有继承)
解析:
48.cerr与cout的差别在于:
cerr是1重定向的,cerr不能被缓冲,它的输出直接传达到标准输出设备上。
(分数:
2.00)
填空项1:
__________________ (正确答案:
不能)
解析:
49.模板使我们可以用一个代码段指定一组相关函数(称为1)或一组相关类(称为2。
(分数:
2.00)
填空项1:
__________________ (正确答案:
函数模板)
填空项1:
__________________ (正确答案:
类模板)
解析:
50.为了便于对照检查,测试用例应由输入数据和预期的1两部分组成。
(分数:
2.00)
填空项1:
__________________ (正确答案:
输出结果)
解析: