编程模拟题-六级C++ 1 / 45 进行文件操作时需要包含头文件( ) A. iostream.h B. stdio.h C. stdlib.h D. fstream.h 本题从头文件使用方法方向考察学生编程操作能力。在C++中,进行文件操作主要需要包含的头文件是fstream.h,这个头文件包含了对文件进行输入和输出的类和函数。因此,正确答案选D。 2 / 45 下面哪个保留字不能作为函数的返回类型?( ) A. void B. new C. int D. long 本题从对不同关键字作用的理解和识别方向考察学生知识认知能力。在C++中,new是一个运算符,用于动态分配内存,不是数据类型,不能作为函数的返回类型。void、int、long都是数据类型,可以作为函数的返回类型。因此,正确答案选B。 3 / 45 在树中,若节点A有4个兄弟,而且B是A的双亲,则B的度为( ) A.3 B.4 C.6 D.5 本题从树的度和节点间关系方向考察学生知识认知能力。若节点A有4个兄弟,那么它们都是由同一双亲节点B产生的,加上A本身,节点B总共有5个子节点,所以B的度为5。因此,正确答案选D。 4 / 45 下列( )不是构造函数的特征 A. 构造函数的函数名与类名相同 B. 构造函数必须指定类型说明 C. 构造函数可以重栽 D. 构造函数可以设置缺省参数 本题从对构造函数特点的理解和识别方向考察学生编程操作能力。在C++中,构造函数的函数名应与类名相同,且不能有任何返回值,也就是说构造函数不需要指定类型说明。构造函数可以被重载,也就是同名函数参数列表不同。同时,构造函数也可以设置默认参数。因此,正确答案选B。 5 / 45 先序遍历下面的二叉树,结果是( )。 A. 0 1 2 3 4 5 6 7 8 9 B. 0 1 3 7 8 4 9 2 5 6 C. 7 3 8 1 9 4 0 5 2 6 D. 7 8 3 9 4 1 5 6 2 0 本题从先序遍历的遍历方法方向考察学生编程操作能力。先序遍历的规则是,首先访问根节点,然后访问左子树,最后访问右子树。因此,正确答案选B。 6 / 45 定义类的析构函数语法是( ) A. +构造函数名() B. ·构造函数名() C. ~构造函数名() D. #构造函数名() 本题从对析构函数定义的理解和识别方向考察学生编程操作能力。在C++中,析构函数是一种特殊的成员函数,其函数名由波浪符(~)开头,后接类名。因此,正确答案选C。 7 / 45 C++语言与C语言相比,他在求解问题方法上进行的最大改进是( ) U. 安全性 V. 复用性 A. 面向过程 T. 面向对象 本题从对C++语言和C语言求解问题方式的理解方向考察学生知识认知能力。C++语言在求解问题的方法上,相比C语言最大的改进在于从面向过程到面向对象的思维转变。在C++语言中,引入了类和对象的概念,这使得我们可以通过模拟现实世界中的对象来解决问题。因此,正确答案选B。 8 / 45 在C++中使用流进行输入输出,其中用于屏幕输出的对象是( ) A. log B. cin C. file D. cout 本题从对输入输出流的理解方向考察学生编程操作能力。在C++中,cout是专门用于屏幕(标准输出)输出的对象。因此,正确答案选D。 9 / 45 下面几种算法时间复杂度中,时间复杂度最高的是( ) A.long B.n C.nlogn D.n^2 本题从对算法时间复杂度的理解方向考察学生知识认知能力。时间复杂度用于描述算法执行效率,n^2表示算法执行时间随数据规模的增长速度,比前三者的长、n和nlogn都要快。因此,正确答案选D。 10 / 45 类的私有成员可在何处访问( ) A. 通过子类的对象访问 B. 本类与子类的成员函数中 C. 通过该类对象访问 D. 本类的成员函数中 本题从对C++面向对象编程中封装特性的理解方向考察学生知识认知能力。在C++类中,私有成员只能在本类的成员函数中访问,而不能在其他地方访问,包括子类和该类对象中。因此,正确答案选D。 11 / 45 关于二叉树的度,下列说法正确的是( ) 二叉树的度都为2 二叉树的度可以小于2 每个节点的度都为2 至少有一个节点的度为2 本题从二叉树的基本概念和性质方向考察学生知识认知能力。在二叉树中,节点的度指的是其子节点的数量,可以为0,1,也可以为2,因此,二叉树的度可以小于2。因此,正确答案选B。 12 / 45 通常情况下,函数模板中的类型参数个数不能是( ) A.0个 B.1个 C.2个 D.3个 本题从函数模板方向考察学生编程操作能力。在C++中,函数模板的类型参数个数应该至少有一个,因为模板的目的就是为了支持多种类型。因此,正确答案选A。 13 / 45 调用empty(),如果栈容器为空,则返回( ) A.False B.True C.0 D.1 本题从栈的一种属性查询接口函数方向考察学生编程操作能力。调用empty()函数,如果返回值为True,表示栈容器为空;否则,表示栈容器中还有元素。因此,正确答案选B。 14 / 45 在一颗二叉树上,第四层的节点数最多有( )个 A.8 B. 16 C. 20 D. 24 本题从对二叉树节点数量计算的理解和应用方向考察学生编程操作能力。在完全二叉树中,如果树的高度为h,那么第i层的节点数最多为2^(i-1),所以第四层的节点数最多为2^(4-1)=8。因此,正确答案选A。 15 / 45 设 x 和 y 均为bool 类型,则(x && y) 为真的条件是( ) A. 他们都是真 B. 其中有一个是真 C. 他们都是假 D. 其中有一个是假 本题从对逻辑运算符&&的理解方向考察学生编程操作能力。对于逻辑与运算符&&,只有在两个操作数都为真(即都为True)时,结果才为真(True)。因此,正确答案选A。 16 / 45 一个由1000个整数构成的顺序表,采用二分查找法最快和最慢分别需要多少次可以查找到元素?( ) A. 100次, 1000次 B. 10次, 100次 C. 1次, 10次 D. 1次, 12次 本题从对二分查找搜索次数的理解和计算方向考察学生知识认知能力和计算能力。二分查找法的基本要求是表中元素是已排好序的。核心思想是每次都通过跟区间中位数的比较,将待查找的区间缩小为原来的一半。最慢的情况是查找的是位于第一和最后位置的元素需要log2(1000)次,即约等于10次。然而,由于数据可能不为2的完全平方数,所以需要向上取整,最多需要12次。最快的情况是恰好查找的是位于中间位置的元素,只需要1次。因此,正确答案选D。 17 / 45 C++标准库fstream有3种操作文件流的数据类型,以下不属于的是( ) A. ofstream B. outstream C. ifstream D. fstream 本题从对库文件中文件流数据类型的理解方向考察学生编程操作能力。在C++标准库fstream中,提供的三种文件流数据类型为ofstream、ifstream和fstream,这三种类型分别用于打开输出、输入和输入/输出文件流。没有outstream这种类型。因此,正确答案选B。 18 / 45 下列程序中,能够输出 “hello world”的语句是( ) A. paste(a, b); C. copy(a, b); D. strcat(b, a); E. strcat(a, b); 本题从对于C++字符串连接函数strcat的理解和应用方向考察学生编程操作能力。在C++中,strcat函数用于将两个字符串连接在一起,其格式为 strcat(char* dest, const char* src)。此函数把 src 所指向的字符串复制到 dest。也就是说,将”world”添加到”hello”后面,输出的结果就是”hello world”。因此,正确答案选D。 19 / 45 使用栈存储数据时,存取特点是( ) A. 先进先出 K. 随机进出 L. 后进先出 M. 后进后出 本题从对栈的存取特性的理解方向考察学生知识认知能力。栈是一种特殊的数据结构,其特点是只能在一端(称为栈顶)进行数据的插入和删除操作。后入栈的元素必须先出栈,即”后进先出”。因此,正确答案选C。 20 / 45 有如下二叉树,该二叉树的后序遍历为 ( ) A. ABDFHCEG B. DHFBACGE C. HFDBGECA D. ABCDEFGH 本题从对后序遍历的理解和运用方向考察学生编程操作能力。在数据结构中,对二叉树的后序遍历定义为先遍历左子树,然后遍历右子树,最后访问根节点。结合题目中给出的二叉树,的确可以得出C选项的后序遍历结果:HFDBGECA。因此,正确答案选C。 21 / 45 要求打开文件”d:file.dat”,可写入数据,正确的语句是( ) A. ifstream infile<d:file.dat", ios::in>; B. ifstream infile<"d:\file.dat", ios::in>; C. ofstream infile<"d:file.dat", ios::out>; D. fstream infile<d:\file.dat, ios::in ios::out>; 本题从对C++文件操作的理解和实践方向考察学生编程操作能力。在C++中,对于写入数据到文件,我们需要使用ofstream类。语句中”d:file.dat”表示文件路径,ios::out表示打开文件以供输出(写入)。因此,正确答案选B。 22 / 45 C++编译器所生成的目标文件后缀名是( ) A. .cpp B. .obj C. .lib D. .exe 本题从编译过程的理解方向考察学生知识认知能力。当C++编译器编译源代码文件(.cpp)时,它生成的中间文件是目标文件(.obj)。之后, 这些目标文件将被链接器链接,生成最终的可执行文件(.exe)。因此,正确答案选B。 23 / 45 执行下列程序后,输出结果是( ) A. n=0 F. n=1 G. n=3 H. n=4 本题从对象的构造、析构以及静态成员变量的理解方向考察学生程序应用能力。程序中,静态成员变量n初始值为0。在main函数中,先通过new操作符创建了一个cla类的对象,这个过程会调用构造函数,使n加1,然后又通过delete操作符删除了这个对象,这个过程会调用析构函数,使n减1。因此,最后输出的n的值为0。因此,正确答案选A。 24 / 45 有如下二叉树,请选择正确的中序遍历结果( ) A. ABCDEFG B. ABDGCEF C. DGBAECF D. GDBEFCA 本题从中序遍历二叉树方向考察学生知识认知能力。在中序遍历二叉树时,我们遵循的顺序是 左子树 – 根节点 – 右子树。因此,正确答案选C。 25 / 45 假定Book为一个类,则该类的拷贝构造函数的声明语句是( ) A. Book (const Book &obj) B. Book &(Book x) C. Book(Book obj) D. Book(book) 本题从对拷贝构造函数声明方式的理解和识别方向考察学生编程操作能力。在C++中,拷贝构造函数的作用是用已存在对象初始化新的对象。所以它的参数一般为一个同类型的常引用。因此,正确答案选A。 26 / 45 对于链表的理解,错误的是( ) A. 链表是一种非连续的存储结构(相对于数组) B. 可以通过下标随机访问链表元素 C. 链表由一系列的结点组成,每个结点包括两个部分:数据和指针 D. 链表通过节点中的指针来确定逻辑顺序 本题从链表的特性和操作方向考察学生知识认知能力。链表不支持随机访问元素,任何访问链表中某一元素的操作都需要从头结点开始逐一遍历,所以不能通过下标随机访问链表元素。因此,正确答案选B。 27 / 45 下列给函数定义默认参数值的写法正确的是( ) A. int fn(int a:1) B. int fn(int a = 1, int b) C. int fn(int a, int b = 1) D. int fn(a:1) 从对函数默认参数设置的理解和应用方向考察学生编程操作能力。在C++中,设置默认参数值的正确写法是在函数声明时,将带有默认值的参数放在参数列表的末尾,并用等号将参数和默认值连接。选项A、B和D的写法都是错误的。因此,正确答案选C。 28 / 45 下列各种高级语言中,不是面向对象的程序设计语言是( ) A. C++ B. VB C. C D. Java 本题从对不同编程语言风格的理解和识别方向考察学生知识认知能力。面向对象编程语言主要特性是类、对象、继承、封装、多态。C++、VB和Java都支持面向对象编程。C语言主要是过程性编程语言,没有内建对面向对象编程的支持。因此,正确答案选C。 29 / 45 创建动态对象,需要使用( )操作符 A. new I. delete J. ~ K. * 本题从方向考察学生编程操作能力。因此,正确答案选A。 30 / 45 C++ fstream库中用于表示追加模式(所有写入都追加到文件末尾)的是( ) A. ios::append B. ios::in C. ios::app D. ios::push 本题从对fstream库中文件打开模式的理解和应用方向考察学生编程操作能力。在C++中,使用fstream库操作文件时,我们可以设置文件打开的模式,如ios::app或ios::append表示追加模式。故答案是A,而选项B、C和D都不是追加模式的表示方法。因此,正确答案选C。 31 / 45 运行下列程序,将会输出什么( ) A. AC B.CA C.A D.C 本题从对象的构造函数调用顺序方向考察学生编程操作能力。在这个例子中,类C是从类A派生的。在C++中,派生类对象的构造过程是先调用基类的构造函数,然后再调用派生类的构造函数。所以当创建C类的对象cobj时,首先调用的是A类的构造函数,输出”A”,然后调用C类的构造函数,输出”C”。因此,正确答案选A。 32 / 45 已知 print() 函数是一个类的常成员函数,无返回值,下列表达式正确的是( ) A. const void print(); B. void const print(); C. void print() const; D. void print(const); 本题从常成员函数的声明方向考察学生知识认知能力。在C++中,如果一个成员函数不会改变对象的状态(即不会改变对象的任何数据成员的值),那么这个成员函数可以声明为const。常成员函数的声明方式是在函数的参数列表后面加上const关键字。因此,正确答案选C。 33 / 45 一棵5层的满二叉树共有( )个节点。 A. 30 B.31 C.63 D.62 本题从二叉树的节点数量计算方向考察学生编程操作能力。满二叉树的节点数量计算公式是2^n – 1,其中n为树的层数。因此一个5层满二叉树的节点数应该为2^5 – 1 = 31。因此,正确答案选B。 34 / 45 下列关于 C++ 友元函数的描述,不正确的是( ) A. 类的友元函数定义在类的外部 E. 友元函数可以访问类的私有、保护成员 F. 友元函数不是成员函数 G. 友元函数不可以作为类 本题从对友元函数的理解方向考察学生编程操作能力。友元不是类的成员,但是可以访问类的所有成员(包括私有成员)。它定义在类外部,它与类有友元关系。D选项表述有误,实际上友元函数可以为另外一个类服务。因此,正确答案选D。 35 / 45 已知:int a[5], p = a; 则与 ++p 相同的是( ) A. *++p B. ++a[0] C. a[0] D. *p++ 本题从指针操作和数组操作的理解和应用方向考察学生编程操作能力。++*p表示先取p指针指向的内容,再对这个内容进行自增操作。由于p = a,所以p指向a[0],所以++*p与++a[0]意义相同。因此,正确答案选B。 36 / 45 定义一个析构函数时,应该注意( ) A. 其名与类名完全相同 Z. 返回类型时void类型 A. 无形参,也不可重载 B. 函数体中必须有delete 本题从对析构函数定义的理解和使用方向考察学生编程操作能力。在C++中,析构函数名与类名相同,但是前面加了一个波浪号(~)作为标识。析构函数没有返回类型,也不需要参数,因此它不能重载。它是在对象生命周期结束时被自动调用的,通常用于做一些清理工作,如释放在构造函数中申请的动态内存。因此,正确答案选C。 37 / 45 下列哪个方法可以压栈( ) A. push() B. pop() C. size() D. shift() 本题从栈的操作接口函数方向考察学生编程操作能力。在栈操作中,push()是用于压栈或者说添加元素到栈顶的操作。因此,正确答案选A。 38 / 45 以下选项不属于二叉树的遍历方式的是( ) A. 尾序遍历 B. 先序遍历 C. 中序遍历 D. 后序遍历 本题从二叉树的遍历方式方向考察学生编程操作能力。二叉树的遍历方式有三种:先序遍历、中序遍历和后序遍历,所谓的尾序遍历在二叉树中并不存在。因此,正确答案选A。 39 / 45 继承一个类的写法是( ) E. class A extends B B. class A on B C. class A is B D. class A : public B 本题从对类的继承语法的理解和识别方向考察学生编程操作能力。在C++中,类A继承类B的语法形式是”class A : 访问修饰符 B”。因此,正确答案选D。 40 / 45 下列说明中 const char *ptr; 其中ptr应该是( ) A. 指向字符常量的指针 N. 指向字符的常量指针 O. 指向字符串常量的指针 P. 指向字符串的常量指针 本题从对C++中指针和常量组合使用的理解方向考察学生编程操作能力。在C++中,const char *ptr表示ptr是一个指针,它指向的字符(char)是一个常量,不能通过ptr改变这个字符的值。所以ptr是指向字符常量的指针。因此,正确答案选C。 41 / 45 C++中,成员和类的默认访问修饰符是( ) A. private B. default C. public D. protected 本题从对不同成员访问级别理解和熟悉程度方向考察学生编程操作能力。在C++中,如果没有显式地指定访问级别,那么类的成员默认为private,即只有类的成员函数或友元函数可以访问。其他如public和protected是需要显示指定的访问修饰符。因此,正确答案选A。 42 / 45 下列关于类和对象的叙述中,错误的是( ) A. 一个类只能有一个对象 W. 对象是类的具体实例 X. 类是对某一类对象的抽象 Y. 类和对象的关系是一种数据类型与变量的关系 本题从对类和对象关系的理解方向考察学生编程操作能力。一个类可以创建多个对象,每个对象都具有类中定义的属性和行为。所以说,一个类只能有一个对象是错误的。因此,正确答案选A。 43 / 45 向一个队列顺序入队 2 4 5 3,则队列的输出顺序是( ) A. 2 4 5 3 H. 2 3 4 5 I. 5 4 3 2 J. 3 5 4 2 本题从队列的先进先出原则方向考察学生编程操作能力。队列遵循先进先出(FIFO)原则,即先入队的元素最先出队。因此,如果向队列顺序入队 2 4 5 3,那么队列的出队顺序应与入队顺序一致,即2 4 5 3。因此,正确答案选A。 44 / 45 若一颗完全二叉树中某节点无左孩子,则该节点一定是( ) A. 度为1的节点 B. 度为2的节点 C. 叶子节点 D. 分支节点 本题从完全二叉树的特性方向考察学生知识认知能力。在完全二叉树中,如果某节点无左孩子,则该节点一定为叶子节点,因为完全二叉树的叶子节点只会在最后一层和次一层出现,并且次一层的叶子节点都是靠左排列的。因此,正确答案选C。 45 / 45 在C++中,类与类之间的继承关系具有( ) A. 自反性 Q. 对称性 R. 传递性 S. 反对称性 本题从继承关系的属性方向考察学生知识认知能力。在C++的类继承中存在传递性,如果类B继承了类A,而类C又继承了类B,那么类C会继承类A的所有属性和方法。这就是继承的传递性。因此,正确答案选C。 Your score is 重新测试