计算机类 二级 C++
2008年4月全国计算机等级考试二级C++笔试试题 50 题 含答案 C++
1 单选题 1 / 50
程序流程图中带有箭头的线段表示的是( )。
A 图元关系 B 数据流 C 控制流 D 调用关系
查看答案 C. 控制流
2 单选题 2 / 50
结构化程序设计的基本原则不包括( )。
A 多元性 B 自顶向下 C 模块化 D 逐步求精
查看答案 A. 多元性
3 单选题 3 / 50
软件设计中模块划分应遵循的准则是( )。
A 低内聚低耦合 B 高内聚低耦合 C 低内聚高耦合 D 高内聚高耦合
查看答案 B. 高内聚低耦合
4 单选题 4 / 50
在软件开发中,需求分析阶段产生的主要文档是( )。
A 可行性分析报告 B 软件需求规格说明书 C 概要设计说明书 D 集成测试计划
查看答案 B. 软件需求规格说明书
5 单选题 5 / 50
算法的有穷性是指( )。
A 算法程序的运行时间是有限的 B 算法程序所处理的数据量是有限的 C 算法程序的长度是有限的 D 算法只能被有限的用户使用
查看答案 A. 算法程序的运行时间是有限的
6 单选题 6 / 50
对长度为n 的线性表排序,在最坏情况下,比较次数不是n(n-1)/2 的排序方法是( )。
A 快速排序 B 冒泡排序 C 直接插入排序 D 堆排序
查看答案 D. 堆排序
7 单选题 7 / 50
下列关于栈的叙述正确的是( )。
A 栈按“先进先出”组织数据 B 栈按“先进后出”组织数据 C 只能在栈底插入数据 D 不能删除数据
查看答案 B. 栈按“先进后出”组织数据
8 单选题 8 / 50
在数据库设计中,将E-R 图转换成关系数据模型的过程属于( )。
A 需求分析阶段 B 概念设计阶段 C 逻辑设计阶段 D 物理设计阶段
查看答案 C. 逻辑设计阶段
9 单选题 9 / 50
有三个关系R、S 和T 如下: R S T B C D a 0 k1 b 1 n1 由关系 R 和S 通过运算得到关系T,则所使用的运算为( )。
A 并 B 自然连接 C 笛卡尔积 D 交
查看答案 D. 交
10 单选题 10 / 50
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC (学号,课号,成绩),则表SC 的关键字(键或码)为( )。
A 课号,成绩 B 学号,成绩 C 学号,课号 D 学号,姓名,成绩
查看答案 C. 学号,课号
11 单选题 11 / 50
下列有关函数重载的叙述中,错误的是( )。
A 函数重载就是用相同的函数名定义多个函数 B 重载函数的参数列表必须不同 C 重载函数的返回值类型必须不同 D 重载函数的参数可以带有默认值
查看答案 C. 重载函数的返回值类型必须不同
12 单选题 12 / 50
下列有关类成员的叙述中,正确的是( )。
A 友元函数是类的成员函数 B 类成员的默认访问权限是私有的 C 类成员函数必须声明为公有的 D 类的静态数据成员不能是常成员
查看答案 B. 类成员的默认访问权限是私有的
13 单选题 13 / 50
下列有关类继承的叙述中,错误的是( )。
A 继承可以实现软件复用 B 虚基类可以解决由多继承产生的二义性问题 C 派生类构造函数要负责调用基类的构造函数 D 派生类没有继承基类的私有成员
查看答案 D. 派生类没有继承基类的私有成员
14 单选题 14 / 50
下列有关运算符重载的叙述中,正确的是( )。
A 运算符重载是多态性的一种表现 B C++中可以通过运算符重载创造新的运算符 C C++中所有运算符都可以作为非成员函数重载 D 重载运算符时可以改变基结合性
查看答案 A. 运算符重载是多态性的一种表现
15 单选题 15 / 50
下列有关模板的叙述中,正确的是( )。
A 函数模板不能含有常规形参 B 函数模板的一个实例就是一个函数定义 C 类模板的成员函数不能是模板函数 D 用类模板定义对象时,绝对不能省略模板实参
查看答案 B. 函数模板的一个实例就是一个函数定义
16 单选题 16 / 50
下列有关C++流的叙述中,错误的是( )。
A C++操作符setw 设置的输出宽度永久有效 B C++操作符endl 可以实现输出的回车换行 C 处理文件I/O 时,要包含头文件fstream B C D a 0 k1 B C D f 3 h2 a 0 k1 n 2 x1 D 进行输入操作时,eof()函数用于检测是否到达文件尾
查看答案 A. C++操作符setw 设置的输出宽度永久有效
17 单选题 17 / 50
下列符号中能够作为C++标识符的是( )。
A const B 2a C _shape D -count
查看答案 C. _shape
18 单选题 18 / 50
已知枚举类型声明语句为: enum COLOR{ WHITE,YELLOW,GREEN=5,RED,BLACK=10 }; 则下列说法中错误的是( )。
A 枚举常量YELLOW 的值为1 B 枚举常量RED 的值为6 C 枚举常量BLACK 的值为10 D 枚举常量WHITE 的值为1
查看答案 D. 枚举常量WHITE 的值为1
19 单选题 19 / 50
执行下列语句段后,输出字符“*”的个数是( )。 for (int i=50; i>1; I-=2)cout<<'*';
A 24 B 25 C 26 D 50
查看答案 B. 25
20 单选题 20 / 50
有如下定义: int a[5]={1,3,5,7,9},*p=a; 下列表达式中不能得到数值5 的是( )。
A a[2] B a[3] C *(p+2) D *p+4
查看答案 B. a[3]
21 单选题 21 / 50
已知函数f 的原型是void f(int *a, long & b);,变量v1、v2 的定义是: int v1; loong v2; 下列调用语句中正确的是( )。
A f(v1, &v2); B f(v1, v2); C f(&v1, &v2); D f(&v1, v2);
查看答案 D. f(&v1, v2);
22 单选题 22 / 50
有如下类定义: class Point{ private; static int how_many; }; ______ how_many=0; 要初始化Point 类的静态成员how_many,下划线处应填入的内容是( )。
A ing B static int C int Point:: D static int Point::
查看答案 C. int Point::
23 单选题 23 / 50
在下列关键字中,不能用来表示继承方式的是( )。
A private B static C public D protected
查看答案 B. static
24 单选题 24 / 50
已知Value 是一个类,Value 是Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是( )。
A Value operator+(Value v, int i); B Value operator+(Value v=value, int i); C Value operator+(Value vint i=0); D Value operator+(Value v=value, int i=0);
查看答案 B. Value operator+(Value v=value, int i);
25 单选题 25 / 50
下面是一个模板声明的开始部分: templute<typename T> double __ 由此可知( )。
A 这可能是一个函数模板的声明 B 这可能是一个类模板的声明 C 这既可能是一个函数模板的声明,也可能是一个类模板的声明 D 这肯定是一个错误的模板声明
查看答案 A. 这可能是一个函数模板的声明
26 单选题 26 / 50
有如下4 个语句: ① cout<<'A'<<setfill('*')<<left<<setw(7)<<'B'<<endl; ② cout<<setfill('*')<<left<<setw(7)<<'A'<<'B'<<endl; ③ cout<<'A'<<serfill('*')<<right<<setw(7)<<'B'<<endl; ④ cout<<setfill('*')<<right<<setw(7)<<'A'<<'B'<<endl; 其中能显示A******B 的是( )。
A ①和③ B ①和④ C ②和③ D ②和④
查看答案 C. ②和③
27 单选题 27 / 50
有如下类定义: class MyClass{ Int value; public; MyClass(int n): value (n) {} int gerValue()const{ return value;} }; 则类MyClass 的构造函数的个数是( )。
A 1 个 B 2 个 C 3 个 D 4 个
查看答案 A. 1 个
28 单选题 28 / 50
有如下类和对象的定义: class Constants{ public; static double getPI(){return 3.1416;} }; Constants constants; 下列各组语句中,能输出3.1416 的是( )。
A cout<<constants->getPI();和cout<<Constants::gerPI(); B cout<<constants.getPI();和cout<<Constants.getPI(); C cout<<constants->getPI();和cout<<Constants->getPI(); D cout<<constants.getPI();和cout<<Constants::getPI();
查看答案 D. cout<<constants.getPI();和cout<<Constants::getPI();
29 单选题 29 / 50
有如下程序: #include<iostream> using namespace std; class VAC{ public; int f() const { return 3; } int f() {return 5;} }; Int main(){ VAC v1; const VAC v2; cout<<v1.f()<<v2.f(); feturn 0; } 运行时的输出结果是( )。
A 53 B 35 C 55 D 33
查看答案 A. 53
30 单选题 30 / 50
有如下类声明: class Base{ protected; int amount; public; Base(int n=0): amount(n){} int getAmount()const { retum amount; } }; class Derived: public Base { protected; int value; public; Derived(int m, int n): value(m). Base(n){} Int getData()const{ return value+amount; } }; 已知x 是一个Derived 对象,则下列表达式中正确的是( )。
A x.value+ x.getAmount() B x.getData()-x.gctAmount() C x.getData()-x.amount D x.value+x.amount
查看答案 B. x.getData()-x.gctAmount()
31 单选题 31 / 50
有如下程序: #include<iostream> using namespace std; class Base { int x; public; Base{int n=0}; x(n){cout<<n;} Int getX()const{return x;} }; class Derived public Base{ int y; public; Derived(int m, int n): y(m), Base(n){cout<<m;} Derived(int m): y(m){cout<<m;} }; int main(){ Derived dl(3), d2(5,7); Return 0; } 运行时的输出结果是( )。
A 375 B 357 C 0375 D 0357
查看答案 C. 0375
32 单选题 32 / 50
下列有关抽象类和纯虚函数的叙述中,错误的是( )。
A 拥有纯虚函数的类是抽象类,不能用来定义对象 B 抽象类的派生类若不实现纯虚函数,它也是抽象类 C 纯虚函数的声明以“=0;”结束 D 纯虚函数都不能有函数体
查看答案 D. 纯虚函数都不能有函数体
33 单选题 33 / 50
有如下程序: #include<iostream> Using namespace std; Class Amount{ int amount; public; Amount(int n=0): amount(n){} Int getAmount()const{return amount;} Amount &operator +=(Amount a){ amount+=a.amount; return ; } }; int main(){ Amount x(3),y(7); x+=y; cout<<x.getAmount()<<endl; return 0; } 已知程序的运行结果是10,则下划线处缺失的表达式是( )。
A *this B this C &amount D amount
查看答案 D. amount
34 单选题 34 / 50
下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<<left”,输出效果将发生变化的是( )。
A cout<<left<<setfill('*')<<357; B cout<<left<<setw(5)<<357; C cout<<left<<setw(5)<<"ABCDE"; D cout<<left<<"ABCDE";
查看答案 B. cout<<left<<setw(5)<<357;
35 单选题 35 / 50
有如下程序: #include<iostream> using namespace std; class GA{ public; virtual int f(){retum l;} }; class GB: public GA{ public; virtual int f(){return 2;} }; void show(GA g){cout<<g.f();} void display(GA &g){cout<<g.f();} int main(){ GA a: show(a); display(a); GB b: show(b); display(b); retum 0; } 运行时的输出结果是( )。
A 1111 B 1211 C 1112 D 1212
查看答案 C. 1112
36 填空题 36 / 50
测试用例包括输入值集和__ 值集。
查看答案 输出
37 填空题 37 / 50
深度为5 的满二叉树有 __ 个叶子结点。
查看答案 16
38 填空题 38 / 50
设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有 __ 个元素。
查看答案 24
39 填空题 39 / 50
在关系数据库中,用来表示实体之间联系的是__ 。
查看答案 关系
40 填空题 40 / 50
在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中, __ 负责数据的模式定义与数据的物理存取构建。
查看答案 数据定义语言
41 填空题 41 / 50
在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“__ ”。
查看答案 对象
42 填空题 42 / 50
指针数组是由__ 构成的数组。
查看答案 指针或指针变量
43 填空题 43 / 50
如果使用数组名称为函数参数,形实结合时,传递的是__ 。
查看答案 地址
44 填空题 44 / 50
在类的对象被创建的时候,__ 函数会被自动调用。
查看答案 构造
45 填空题 45 / 50
在类中,__ 成员为类的所有对象所共享。
查看答案 静态
46 填空题 46 / 50
有如下程序: #include <iostream> using namespace std; class Base{ public; int m,n; }; class Derived1: __ Base{}; class Derived2: public Derived1{ public: void SetMN(int M, int N){ M=M; n=N; } int GetSumMN(){ retum (m+n); } }; int main(){ Derived2 objD; objD.SetMN(3,4); cout<<"M+N="<<objD.m+bojD.n<<endl; retum 0; } 编译时只有“cout<<"M+N="<<objD.m+bojD.n<<endl;”有语法错误,程序的其他地方没有语法错误,请判断下 划线处使用的关键字是什么。
查看答案 private
47 填空题 47 / 50
有如下程序: #include <iostream> using namespace std; class Base{ int b; public; Base(int i) { b=i; } void disp(){cout<<"Base: b="<<b<<;} }; class basel; virtual public Base{ public; Base1(int i): Base(i){} }; class Base2:virtual public Basc{ public; Base2(int i):Base(i){} }; class Derived:public Base2.public Base1{ int d; public; Derived(int I,int j):Base1(j), Base2(j), __ { d=i; } void disp() {cout<<"Derived: d="<<d<<"; } }; int main(){ Derived objD(1,2); objD.disp(); objD.Basce::disp(); objD.Basce1::disp(); objD.Basce2::disp(); return 0; } 请将程序补充完整,使程序在运行时输出: Derived: d=1 Base: b=2 Base: b=2 Base: b=2
查看答案 Base(j)
48 填空题 48 / 50
如下程序声明了一个电话号码类PhoneNumber,重载了流插入运算符<<,以便于电话号码的输出。请将程序补 充完整。 #include <iostream> #include <iomanip> #include <string> using namespace std; class PhoneMumber{ public; void setNumber(string number){ this->number=number; } //重载流插入操作符 friend__ (ostream &output, const PhoneNumber &num) { output<<num.number; return output; } private; string number; }; int main(){ PhoneNumber phone; phone.setNumber("8008100598"); cout <<"The phone number is:"<<phone << end1; return 0; }
查看答案 PhoneNumber operator <<
49 填空题 49 / 50
如下程序声明了一个二维图形类TwoDShape,从其派生出矩形类Rec。 #include <iostream> #include <string> using namespace std; class TwoDShape{ //二维图形类 char name[20]; public; TwoDShape(char *n="unknown"){ strcpy(name, n); } char *getNa:ne(){ return name; }__ =0; }; class Rec : public TwoDShape{ double width, height; public; Rec (double w=0.0, double h=0.0):TwoDShape("rectamgle") { width = w; height = h; } double getWidth(){ return width; } double getHeight(){ return height;} double area(){ return width*height; } }; int main(){ TwoDShape *shape; shape = new Rec(2.1, 3.0); cout <<"object is"<<shape->getName()<<"\n"; cout <<"Area is"<<shape->area()<<"\n"; return 0; } 请将程序补充完整,使程序在运行时输出: object is triangle Area is 6.3
查看答案 virval double area()
50 填空题 50 / 50
如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员 函数show 用于输出两个数据成员的数值。 #include <iostream> using namespace std;__ T1 i; T2 j; public; dataClass(T1 a T2 b){ i = a; j=b; } void show(){ cout << i <<", "<<j<<'\n'; } }; int main(){ dataClass<int, double> ob1(10, 0.23); dataClass<char, char *>ob2('X', "my data"); ob1.show(); ob2.show(); retum 0; } 请将程序补充完整,使程序在运行时输出: 10, 0.23 X, my data__
查看答案 templateclass dataClass