计算机类 二级 C++
2004年9月全国计算机等级考试二级笔试试卷&公共基础知识及C++语言程序设计 50 题 含答案 C++
1 单选题 1 / 50
下面叙述正确的是
A 算法的执行效率与数据的存储结构无关 B 算法的空间复杂度是指算法程序中指令(或语句)的条数 C 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D 以上三种描述都不对
查看答案 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
2 单选题 2 / 50
以下数据结构中不属于线性数据结构的是
A 队列 B 线性表 C 二叉树 D 栈
查看答案 C. 二叉树
3 单选题 3 / 50
在一棵二叉树上第5层的结点数最多是
A 8 B 16 C 32 D 15
查看答案 B. 16
4 单选题 4 / 50
下面描述中,符合结构化程序设计风格的是
A 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B 模块只有一个入口,可以有多个出口 C 注重提高程序的执行效率 D 不使用goto语句
查看答案 A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
5 单选题 5 / 50
下面概念中,不属于面向对象方法的是
A 对象 B 继承 C 类 D 过程调用
查看答案 D. 过程调用
6 单选题 6 / 50
在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是
A 可行性分析 B 需求分析 C 详细设计 D 程序编码
查看答案 B. 需求分析
7 单选题 7 / 50
在软件开发中,下面任务不属于设计阶段的是
A 数据结构设计 B 给出系统模块结构 C 定义模块算法 D 定义需求并建立系统模型
查看答案 D. 定义需求并建立系统模型
8 单选题 8 / 50
数据库系统的核心是
A 数据模型 B 数据库管理系统 C 软件工具 D 数据库
查看答案 B. 数据库管理系统
9 单选题 9 / 50
下列叙述中正确的是
A 数据库系统是一个独立的系统,不需要操作系统的支持 B 数据库设计是指设计数据库管理系统 C 数据库技术的根本目标是要解决数据共享的问题 D 数据库系统中,数据的物理结构必须与逻辑结构一致
查看答案 C. 数据库技术的根本目标是要解决数据共享的问题
10 单选题 10 / 50
下列模式中,能够给出数据库物理存储结构与物理存取方法的是
A 内模式 B 外模式 C 概念模式 D 逻辑模式
查看答案 A. 内模式
11 单选题 11 / 50
关于面向对象的程序设计方法,下列说法正确的是
A “封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 B “多态性”指的是对象的状态会根据运行时要求自动变化 C 基类的私有成员在派生类的对象中不可访问,也不占内存空间 D 在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
查看答案 D. 在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
12 单选题 12 / 50
判断字符型变量ch是否为大写英文字母,应使用表达式
A ch>='A' & ch<='Z' B ch<='A' ||ch>='Z' C 'A'<=ch<='Z' D ch>='A' && ch<='Z'
查看答案 D. ch>='A' && ch<='Z'
13 单选题 13 / 50
已知下列语句中的x和y都是int型变量,其中错误的语句
A x=y++; B x=++y; C (x+y)++; D ++x=y;
查看答案 C. (x+y)++;
14 单选题 14 / 50
执行语句序列 int n; cin >> n; switch(n) { case 1: case 2: cout << '1'; case 3: case 4: cout << '2'; break; default: cout << '3'; } 时,若键盘输入1,则屏幕显示
A 1 B 2 C 3 D 12
查看答案 D. 12
15 单选题 15 / 50
下列程序的输出结果是 #include <iostream> using namespace std; int main() { char a[] = "Hello, World"; char *ptr = a; while (*ptr) { if (*ptr >= 'a' && *ptr <= 'z') cout << char(*ptr + 'A' -'a'); else cout << *ptr; ptr++; } return 0; }
A HELLO, WORLD B Hello, World C hELLO, wORLD D hello, world
查看答案 A. HELLO, WORLD
16 单选题 16 / 50
已知:int m=10;在下列定义引用的语句中,正确的是
A int &x=m; B int y=&m; C int &z; D int &t=&m;
查看答案 A. int &x=m;
17 单选题 17 / 50
下列函数原型声明中错误的是
A void Fun(int x=0, int y=0); B void Fun(int x, int y); C void Fun(int x, int y=0); D void Fun(int x=0, int y);
查看答案 D. void Fun(int x=0, int y);
18 单选题 18 / 50
已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是
A char test(int,int,int); B double test(int,int,double); C int test(int,int,int=0); D float test(int,int,float=3.5F);
查看答案 B. double test(int,int,double);
19 单选题 19 / 50
有以下程序 #include<iostream> int i = 0; void fun() { { static int i = 1; std::cout<<i++<<','; } std::cout<<i<<','; } int main() { fun(); fun(); return 0; } 程序执行后的输出结果是
A 1,2,1,2, B 1,2,2,3, C 2,0,3,0, D 1,0,2,0,
查看答案 D. 1,0,2,0,
20 单选题 20 / 50
已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int v1;long v2;,正确的调用语句是
A f(v1, &v2); B f(v1, v2); C f(&v1, v2); D f(&v1, &v2);
查看答案 C. f(&v1, v2);
21 单选题 21 / 50
有以下类定义 class MyClass { public: MyClass(){cout<<1;} }; 则执行语句MyClass a, b[2], *p[2];后,程序的输出结果是
A 11 B 111 C 1111 D 11111
查看答案 B. 111
22 单选题 22 / 50
关于友元,下列说法错误的是
A 如果类A是类B的友元,那么类B也是类A的友元 B 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C 友元关系不能被继承 D 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元
查看答案 A. 如果类A是类B的友元,那么类B也是类A的友元
23 单选题 23 / 50
关于动态存储分配,下列说法正确的是
A new和delete是C++语言中专门用于动态内存分配和释放的函数 B 动态分配的内存空间也可以被初始化 C 当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间 D 当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new
查看答案 B. 动态分配的内存空间也可以被初始化
24 单选题 24 / 50
有以下程序 #include<iostream> using namespace std; class MyClass { public: MyClass(int n){number = n;} //拷贝构造函数 MyClass(MyClass &other){ number=other.number;} ~MyClass(){} private: int number; }; MyClass fun(MyClass p) { MyClass temp(p); return temp; } int main() { MyClass obj1(10), obj2(0); MyClass obj3(obj1); obj2=fun(obj3); return 0; } 程序执行时,MyClass类的拷贝构造函数被调用的次数是
A 5 B 4 C 3 D 2
查看答案 B. 4
25 单选题 25 / 50
在公有派生的情况下,派生类中定义的成员函数只能访问原基类的
A 公有成员和私有成员 B 私有成员和保护成员 C 公有成员和保护成员 D 私有成员、保护成员和公有成员
查看答案 C. 公有成员和保护成员
26 单选题 26 / 50
在C++中用来实现运行时多态性的是
A 重载函数 B 析构函数 C 构造函数 D 虚函数
查看答案 D. 虚函数
27 单选题 27 / 50
一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是
A 每个派生类的构造函数都要为虚基类构造函数提供实参 B 多继承时有可能出现对基类成员访问的二义性问题 C 使用虚基类可以解决二义性问题并实现运行时的多态性 D 建立最派生类对象时,虚基类的构造函数会首先被调用
查看答案 C. 使用虚基类可以解决二义性问题并实现运行时的多态性
28 单选题 28 / 50
在一个类体的下列声明中,正确的纯虚函数声明是
A virtual void vf()=0; B void vf(int)=0; C virtual int vf(int); D virtual void vf(int) { }
查看答案 A. virtual void vf()=0;
29 单选题 29 / 50
在下面的运算符重载函数的原型中,错误的是
A Volume operator - (double, double); B double Volume::operator- (double); C Volume Volume: :operator - (Volume); D Volume operator - (Volume, Volume);
查看答案 A. Volume operator - (double, double);
30 单选题 30 / 50
下列是模板声明的开始部分,其中正确的是
A template<T> B template<class T1,T2> C template<class T1, class T2> D template<class T1;class T2>
查看答案 C. template<class T1, class T2>
31 单选题 31 / 50
执行语句序列 ofstream outfile("DATA.DAT"); if(...) cout << "OK"; else cout << "FAIL"; 后,如果文件打开成功显示“OK”,否则就显示“F厶n。”。由此可知,上面if语句的... 处的表达式应是
A outfile.fail() 或 outfile B outfile.good() 或 !outfile C outfile.good() 或 outfile D outfile.fail() 或 !outfile
查看答案 C. outfile.good() 或 outfile
32 单选题 32 / 50
C++流中重载的运算符>>是一个( )
A 用于输出操作的非成员函数 B 用于输入操作的非成员函数 C 用于输出操作的成员函数 D 用于输入操作的成员函数
查看答案 B. 用于输入操作的非成员函数
33 单选题 33 / 50
有以下类定义 class Point { public: Point(int x = 0, int y = 0) { _.x = x; _.y = y; } void Move(int xOff, int yOff) { _x += xOff; _.y += yOff; } void Print() const { cout << '(' << _x << ',' << _y << ')' << endl; } private: int _x, _y; }; 下列语句中会发生编译错误的是
A Point pt; pt.Print(); B const Point pt; pt.Print(); C Point pt; pt.Move(l, 2); D const Point pt; pt.Move(l, 2);
查看答案 D. const Point pt; pt.Move(l, 2);
34 单选题 34 / 50
有以下类定义 class MyClass { private: int id; char gender, char *phone; public: MyClass():id(0),gender('#'),phone(NULL) { } MyClass(int no, char ge='#', char *ph= NULl.) { id=no;gende=ge;phone=ph; } }; 下列类对象定义语句中错误的是
A MyClass myObj; B MyClass myObj(11, "13301111155"); C MyClass myObj(12, 'm'); D MyClass myObj(12);
查看答案 B. MyClass myObj(11, "13301111155");
35 单选题 35 / 50
有以下程序 #include <iostream> using namespace std; class Complex { public: Complex(double r =0, double i =0):re(r), im(i) { } double real() const { return re; } double imag() const { return im;} Complex operator +(Complex c) const { return Complex(re+c.re, im+c.im); } private: double re, im; }; int main() { Complex a = Complex(l, 1) + Complex(5); cout << a.real() << '+' << a.imag() <<'i' << endl; return 0; } 程序执行后的输出结果是
A 6+6i B 6+1i C 1+6i D 1+1i
查看答案 B. 6+1i
36 填空题 36 / 50
算法的复杂度主要包括 __ 复杂度和空间复杂度。
查看答案 时间
37 填空题 37 / 50
数据的逻辑结构在计算机存储空间中的存放形式称为数据的 __ 。
查看答案 存储结构 或 物理结构 或 物理存储结构
38 填空题 38 / 50
若按功能划分,软件测试的方法通常分为白盒测试方法和 __ 测试方法。
查看答案 黑盒 或 黑箱
39 填空题 39 / 50
如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体“工人”与实体“设备”之间存在 __ 的联系。
查看答案 一对多 或 1对多 或 I:M 或 I:N(其中M、N大小写均可)
40 填空题 40 / 50
关系数据库管理系统能实现的专门关系运算包括选择、连接和 __ 。
查看答案 投影
41 填空题 41 / 50
设有定义语句:int a=12;,则表达式a*=2+3的运算结果是 __ 。
查看答案 60
42 填空题 42 / 50
从实现的角度划分,C++所支持的两种多态性分别是 __ 时的多态性和运行时的多态性。
查看答案 编译
43 填空题 43 / 50
将—个函数声明为一个类的友元函数必须使用关键字 __ 。
查看答案 friend
44 填空题 44 / 50
请按下面注释的提示,将类B的构造函数定义补充完整。 class A { int a; public: A(int aa=0) { a=aa; } }; class B: public A { int b; A c; public: //用aa初始化基类A,用aa+1初始化类对象成员c B(int aa): __ { b=aa+2; } };
查看答案 A(aa),c(aa+1) 或 c(aa+1),A(aa)
45 填空题 45 / 50
下列程序的输出结果是 __ 。 #include <iostream> using namespace std; int main() { int i = 5; int &r = i; r = 7; cout << i << endl; return 0; }
查看答案 7
46 填空题 46 / 50
下列程序的输出结果是 __ 。 #include <iostream> using namespace std; class Test { public: Test() { cnt++; } ~Test() {cnt--; } static int Count() { return cnt;} private: static int cnt; }; int Test::cnt = 0; int main() { cout << Test::Count0 <<' '; Test tl, t2; Test* pT3 = new Test; Test* pT4 = new Test; cout << Test::Count0 <<' '; delete pT4; delete pT3; cout << Test::Count() << endl; return 0; }
查看答案 042
47 填空题 47 / 50
下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1) unsigned fact(unsigned n) { if ( n<= 1) return 1; return __ ; }
查看答案 n*fact(n-1)
48 填空题 48 / 50
下列程序的输出结果是 __ 。 #include <iostream> using namespace std; template<tytename T> T fun(T a, T b) { return (a<=b)?:b;} int main() { cout << fun(3, 6) << ',' << fun (3.14F, 6.28F) << endl; return 0; }
查看答案 3,3.14
49 填空题 49 / 50
与成员访问表达式p->name等价的表达式是 __ 。
查看答案 (*p).name
50 填空题 50 / 50
下列程序的输出结果是 __ 。 #include <iostream> using namespace std; class base { public: int n; base(int x) { n = x;} virtual void set(int m) { n = m; cout << n <<' ';} }; class deriveA:public base { public: deriveA(int x):base(x) { } void set(mt m) { n += m; cout << n <<' ';} }; class deriveB:public base [ public: deriveB(int x):base(x) { } void set(int m) { n +=m; cout <<n << ' ';} }; int main() { deriveA dl(1); deriveB d2(3); base *pbase; pbase = &dl; pbase->aet(1); pbase = &d2; pbase->set(2); return 0; }
查看答案 25