国家二级C++机试(选择题)模拟试卷509
选择题
1.有如下程序:
#include
using namespace std;
class Basel
{
public:
Basel(intd){cout<<d;}
~Basel(){}
};
class Base2
{
public:
Base2(intd){cout<<d;}
~Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int d):Basel(b,Base2(a),bl(d),b2(c){}
private:
int bl:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
执行这个程序的输出结果是( )。(D)
A. 1234
B. 2134
C. 12
D. 21
解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。
2.下列对于线性链表的描述中正确的是( )。(A)
A. 存储空间不一定连续,且各元素的存储顺序是任意的
B. 存储空间不一定连续,且前件元素一定存储在后件元素的前面
C. 存储空间必须连续,且前件元素一定存储在后件元素的前面
D. 存储空间必须连续,且各元素的存储顺序是任意的
解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。
3.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。(C)
A. log2n
B. n/2
C. n
D. n+1
解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。
4.有如下类声明:
class Foo{int bar; };
则Foo类的成员bar是( )。(C)
A. 公有数据成员
B. 公有成员函数
C. 私有数据成员
D. 私有成员函数
解析:此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字;所有成员默认定义为private私有权限。
5.在软件开发中,需求分析阶段产生的主要文档是( )。(D)
A. 软件集成测试计划
B. 软件详细设计说明书
C. 用户手册
D. 软件需求规格说明书
解析:在软件开发过程中,需求分析阶段产生的主要文档是软件需求规格说明书。
6.对于一个类定义,下列叙述中错误的是( )。(B)
A. 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B. 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
C. 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D. 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。
7.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。(C)
A. DB包含DBS和DBMS
B. DBMS包含DB和DBS
C. DBS包含DB和DBMS
D. 没有任何关系
解析:数据库系统(Database System简称DBS)由下列几个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。其中DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS(Database Management System)即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法。
8.下列关于C++函数的叙述中,正确的是( )。(C)
A. 每个函数至少要具有一个参数
B. 每个函数都必须返回一个值
C. 函数在被调用之前必须先声明
D. 函数不能自己调用自己
解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。
9.有如下函数模板定义:
template<typename T1,int a2,int a3>
T1 sum(T1 a1)
{
return(a1+a2+a3);
}
则以下调用中正确的是( )。(A)
A. sum<int,4,3>(5);
B. sum<4,3>(5);
C. sum<int,int,int>(5);
D. sum(5);
解析:本题考查的函数模板的使用,有时不能根据用户传进来的参数决定所有模板函数的值类型,如函数的返回值,还有用户希望自己指定参数类型,这时就需要显式地指出参数模板的类型,显示指定模板的类型格式为:返回值类型函数模板<参数类型表>(参数表)。
10.有如下程序:
#include
using namespace std;
int main()
{
char str[100],*p;
cout<<\\(A)
A. 7
B. 12
C. 13
D. 100
解析:此题考查的是默认输入格式。本题输入数据类型为char,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有空格。所以输入后str中的字符串为“abcdefg”:主函数中接下来for语句的作用是计算字符串p的长度,故最终输出字符串“abcdefg”的长度7。
11.在对函数进行原型声明时,下列语法成分中,不需要的是( )。(D)
A. 函数返回类型
B. 函数参数列表
C. 函数名
D. 函数体
解析:在C++中函数在使用之前要预先声明,这种声明在标准C++中称为函数原型。函数给出了函数名、返回类型以及在调用函数
本文档预览:3600字符,共8595字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载