1、国家二级 C+机试(选择题)模拟试卷 37 及答案与解析 一、选择题 1 下列关于栈叙述正确的是 ( )。 ( A)栈顶元素最先能被删除 ( B)栈顶元素最后才能被删除 ( C)栈底元素永远不能被删除 ( D)栈底元素最先被删除 2 下列叙述中正确的是 ( )。 ( A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 ( B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 ( C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 ( D)以上说法均不正确 3 某二叉树共有 7个结点,其中叶子结点只有 1个,则该二叉树的深度为 (假设根结点在第 1层 )( )。 ( A)
2、 3 ( B) 4 ( C) 6 ( D) 7 4 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)学生成绩管理系统 ( B) C语言编译程序 ( C) UNIX 操作系统 ( D)数据库管理系统 5 结构化程序所要求的基本结构不包括 ( )。 ( A)顺序结构 ( B) GOTO跳转 ( C)选择 (分支 )结构 ( D)重复 (循环 )结构 6 下面描述中错误的是 ( )。 ( A)系统总体结构图支持软件系统的详细设计 ( B)软件设计是将软件需求转换为软件表示的过程 ( C)数据结构与数据库设计是软件设计的任务之一 ( D) PA
3、D图是软件详细设计的表示工具 7 负责数据库中查询操作的数据库语言是 ( )。 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 8 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是 ( )。 ( A) 1: 1联系 ( B) 1: m联系 ( C) m: 1联系 ( D) m: n联系 9 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)并 ( C)交 ( D)差 10 定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是 ( )。 ( A) 369
4、( B) 369 ( C) 0.369 ( D)整数集合 1,2,3,4,5 11 下列字符串中可以用作 C+ 标识符的是 ( A) 1481var ( B) test-1481 ( C) true ( D) _123 12 下列枚举类型的定义中,包含枚举值 3的是 ( A) enum test LEFT, UP, RIGHT,DOWN; ( B) enum test LEFT, UP=5, RIGHT, DOWN; ( C) enum test LEFT=-1, UP,RIGHT, DOWN; ( D) enum test LEFT, UP, RIGHT=6, DOWN; 13 有如下程序段
5、: int i=1; while(1) i+; if(i = 30) break; if(i%3 = 0) cout ,下列叙述错误的是 ( A) 有可能包含关键字 true ( B) 有可能包含自定义标识符 ( C) 有可能包含字符 * ( D) 有可能包含关键字 float 21 下列关于运算符重载的叙述中,错误的是 ( A)不能通过运算符重载在 C+ 中创建新的运算符 ( B)赋值运算符只能重载为成员函数 ( C)运算符函数重载为类的成员函数时,第一操作数是该类对象 ( D)重载类型转换运算符时,应声明返回类型为 void 22 下列运算符中,不能被重载的是 ( A) | ( B) +=
6、 ( C) . ( D) - 23 有如下两个类定义: class AA; class BB AA v1,*v2; BB v3; int *v4; ; 其中有一个成员变量的定义是错误的,这个变量是 ( A) v1 ( B) v2 ( C) v3 ( D) v4 24 Sample 是一个类,且有如下语句: Sample a2, *p = new Sample; 执行这个语句时调用 Sample类的构造函数的次数是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 25 当一个类对象行将消亡时, 系统自动调用 ( A)析构函数 ( B)构造函数 ( C)静态函数 ( D)友元函数 26 下
7、列关于派生类构造函数和析构函数的叙述中,错误的是 ( A)如果基类中没有缺省构造函数,那么派生类必须定义构造函数 ( B)派生类的构造函数会隐含调用基类的构造函数 ( C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 ( D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 27 派生类的成员函数不能访问的基类的成员是 ( A)公有成员和保护成员 ( B)公有成员 ( C)保护成员 ( D)私有成员 28 有如下类定义: class AA int a; public: AA(int n=0):a(n) ; class BB :public AA public
8、: BB(int n) _ ; 其中横线处缺失部分是 ( A) :AA(n) ( B) :a(n) ( C) a(n); ( D) a=n; 29 有如下类定义: class Box public: double GetLength() return length; double GetWidth(); double GetHeight(); private: double length,width,height; ; inline double Box:GetWidth() return width; double Box:GetHeight() return height; 在成员函数 G
9、etLenth、 GetWidth 和 GetHeight 中,内联函数有 ( A) 3个 ( B) 2个 ( C) 1个 ( D) 0个 30 已知 TV是一个类,并有函数 func定义如下: void func() TV li,*net2,company3; 则在调用 func() 后, TV 类的析构函数被调用的次数是 ( A) 2次 ( B) 3次 ( C) 4次 ( D) 6次 31 有如下程序: #include #include using namespace std; class MyBag public: MyBag(string br=“ABC“):brand(br) co
10、ut using namespace std; class TV public: TV(int s=41):size(s) void Print() cout using namespace std; class Point public: Point(int xx=0,int yy=0):x(xx),y(yy) protected: void SetXY(int xx,int yy) x=xx; y=yy; private: int x,y; ; class Circle:public Point public: Circle(int r):radius(r) void Set(int r,
11、int x,int y) radius=r; SetXY(x,y); / void Print() const cout #include using namespace std; class Appliance public: Appliance(string t=“A“):type(t) cout #include using namespace std; class Instrument public: Instrument(string t=“乐器 “,string n=“无名 “):type(t),name(n) virtual string GetType() const retu
12、rn “乐器 “; string GetName() const return “无名 “; protected: string type,name; ; class Piano:public Instrument public: Piano(string n,string t=“钢琴 “):Instrument(t,n) string GetType() const return “钢琴 “; string GetName() const return name; ; int main() Instrument *pi=new Piano(“星空 “); coutGetType()GetNa
13、me(); delete pi; return 0; 运行时的输出结果是 ( A)乐器 -星空 ( B)乐器 -无名 ( C)钢琴 -星空 ( D)钢琴 -无名 37 下列关于模板形参的叙述中,错误的是 ( A)模板形参表必须在关键字 template 之后 ( B)模板形参表必须用括弧 ( )括起来 ( C)可以用 class 修饰模板形参 ( D)可以用 typename 修饰模板形参 38 有如下模板声明: template class A; 下列声明中,与上述声明不等价的是 ( A) template class A; ( B) template class A; ( C) templ
14、ate class A; ( D) template class A; 39 下列关于输入流类成员函数 getline() 的叙述中,错误的是 ( A) 该函数是用来读取键盘输入的字符串的 ( B)该函数读取的字符串长度是受限制的 ( C)该函数读取字符串时,遇到终止符便停止 ( D)该函数读取字符串时,可以包含空格 40 有如下程序 #include #include using namespace std; int main( ) cout,所以 B 选项错 误。 38 【正确答案】 D 【试题解析】 本题考查模板的定义, A、 B、 C选项中两个参数都为 typename或class,而
15、 D选项中第二个参数不是 typename 或 class,所以与题目中不等价, D选项错误。 39 【正确答案】 A 【试题解析】 本题考查字符输入的流成员函数 getline,函数原型为: istream 将输入流 is中读到的字符存入 str中,直到遇到终结符 delim才结束。对于第一个函数 delim是可以由用户自己定义的终结符;对于第二个函数 delim默认为 n(换行符)。 函数在输入流 is中遇到文件结束符( EOF)或者在读入字符的过程中遇到错误都会结束。 在遇到终结符 delim后, delim会被丢弃,不存入 str中。在下次读入操作时,将在 delim的下个字符开始读入。所以 A选项错误。 40 【正确答案】 D 【试题解析】 本题考查输入输出格式的控制,可以看出 *12.345和 *34.567字段宽度都为 8,所以遗漏处为 setw(8), D选项正确。