(4)软件(程序)调试的任务是 A)诊断和改正程序中的错误 B)尽可能多地发现程序中的错误 C)发现并改正程序中的所有错误 D)确定程序中错误的性质 (5)数据流程图(DFD图)是 A)软件概要设计的工具 B)软件详细设计的工具
C)结构化方法的需求分析工具 D)面向对象方法的需求分析工具 (6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于 A)定义阶段 B)开发阶段 C)维护阶段
D)上述三个阶段
(7)数据库管理系统中负责数据模式定义的语言是 A)数据定义语言 B)数据管理语言 C)数据操纵语言 D)数据控制语言
(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是 A)文件 B)数据库 C)字段 D)记录
(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的 A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段
(10)有两个关系R和T如下:
则由关系R得到关系T的操作是 A)选择 B)投影 C)交
6
D)并
(11)下列关于函数的描述中,错误的是 A)函数可以没有返回值 B)函数可以没有参数
C)函数可以是一个类的成员 D)函数不能被定义为模板
(12)若MyClass是一个类名,且有如下语句序列 MyClass c1,*c2;
MyClass *c3=new MyClass; MyClass &c4=c1;
上面的语句序列所定义的类对象的个数是 A)1 B)2 C)3 D)4
(13)下列关于继承方式的描述中,错误的是
A)如果不显式地指定继承方式,缺省的继承方式是私有(private)
B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
(14)将前缀运算符―--‖重载为非成员函数,下列原型中,能正确用于类中说明的是 A)Decr& operator --(int);
B)Decr operator --( Decr&,int); C)friend Decr& operator --(Decr&); D)frlend Decr operator --(Decr&,int);
(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列 MyTempp2; MyTempp3[2];
编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是 A)1 B)2 C)3 D)0
(16)在C++中,cin是个 A)类 B)对象 C)模板 D)函数
(17)在下列字符中,不允许作为C++标识符的是
A)b B)B C)_ D)2
(18)下列叙述中,错误的是 A)false是一个逻辑型常量 B)\是一个字符型常量 C)365是一个int常量
D)3.1415926是一个double常量
(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是
A)if(x==0) y=1; else y=2; B)if(x==0) then y=1 else y=2; C)if(x==0) y=1 else y=2; D)if x==0 y=1; else y=2;
(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是 A)int x[3]={0,0,0}; B)int x[]={0};
C)static int x[3]={0}; D)int x[]={0,0,0};
(21)关于函数中的<返回类型>,下列表述中错误的是 A)<返回类型>中有可能包含关键字int B)<返回类型>中有可能包含自定义标识符 C)<返回类型>中有可能包含字符* D)<返回类型>中可能包含[]
(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是 A)MyClass p=MyClass; B)MyClass p=new MyClass; C)MyClass &p=new MyClass; D) MyClass a,&p=a; (23)有如下两个类定义 class XX{ private: double x1; protected: double x2; public: double x3; };
class YY:protected XX{ private: double y1; protected: double y2;
7
public: double y3; };
在类YY中保护成员变量的个数是 A)1 B)2 C)3 D)4
(24)下列关于运算符重载的描述中,错误的是 A)可以通过运算符重载在C++中创建新的运算符 B)赋值运算符只能重载为成员函数
C)运算符函数重载为类的成员函数时,第一操作数是该类对象
D)重载类型转换运算符时不需要声明返回类型 (25)下列关于类模板的描述中,错误的是 A)类模板的成员函数都是模板函数 B)可以为类模板参数设置默认值 C)类模板描述了一组类
D)类模板中只允许有一个类型参数
(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是 A)setprecision B)setw C)setfill
D)showpoint(27)下列程序段中包含4个函数,其中具有隐含this指针的是 int fun1(); class Test{ public: int fun2();
friend int fun3(); static int fun4(); };
A)fun1 B)fun2 C)fun3 D)fun4
(28)有如下程序 #include
using namespace std; class Test{ public: Test(){ }
Test(const Test &t) {cout<<1;} };
Test fun(Test &u) {Test t=u; return t;}
int main(){Test x,y; x=fun(y); return 0;} 运行这个程序的输出结果是 A)无输出 B)1 C)11 D)111
(29)有如下程序 #include
using namespace std; class A{ public:
A(int i=0):r1(i) { }
void print() {cout<<'E’<
void print() const {cout<<'C'<
int main() { A a1;
const A a2(4); a1.print(2); a1.print(); return 0; }
运行时的输出结果是 A)P8-E4 B)P8-C16- C)P0-E4- D)P0-C16-
(30)下列代码声明了3个类 class Person{};
class Student:public Person{}; class Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是 A)类Person是类Undergraduate的基类 B)类Undergraduate从类Student公有继承 C)类Student是类Person的派生类
D)类Undergraduate是类Person的派生类
(31)有如下程序 #include
using namespace std; Class Base{ public:
Base(int x=0):valB(x) {cout<
~Base() {cout<
class Derived:public Base{ public: Derived(int x=0,int y=0):Base(x),valD(y){cout<
int main(){
Derived obj12(2,3); retuen 0; }
运行时的输出结果是 A)2332 B)2323 C)3232 D)3223
(32)下面是类Shape的定义: class Shape{ public:
virtual void Draw()=0; };
下列关于Shape类的描述中,正确的是 A)类Shape是虚基类 B)类Shape是抽象类
C)类Shape中的Draw函数声明有误
D)语句―Shape s;‖能够建立Shape的一个对象s (33)将运算符―+‖重载为非成员函数,下列原型声明中,错误的是
A)MyClock operator + (MyClock,long); B)MyClock operator + (MyClock,MyClock); C)MyClock operator + (long,long);
D)MyClock operator + (long,MyClock);
(34)打开文件时可单独或组合使用下列文件打开模式
①ios_base::app ②ios_base::binary ③ios_base::in ④ios_base::out
若要以二进制读方式打开一个文件,需使用的文件打开模式为 A)①③ B)①④ C)②③
8
D)②④
(35)有如下程序: #include
using namespace std; Class B{ public:
B(int xx):x(xx) {++cout; x+=10;} virtual void show() const
{cout<
static int count; private: int x; };
class D:public B{ public:
D(int xx,int yy):B(xx),y(yy) {++count; y+=100;} virtual void show() const
{cout<
int B::count=0; int main(){
B *ptr=new D(10,20); ptr->show(); delete ptr; return 0; }
运行时的输出结果是 A)1_120 B)2_120 C)1_20 D)2_20
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【l】~【15】序号的横线上,答在试卷上不得分。
(1)一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为 【1】 。
(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有 【2】 个元素。 (3)设二叉树如下:
对该二叉树进行后序遍历的结果为 【3】 。 (4)软件是 【4】 、数据和文档的集合。
(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号, 【5】 ,成绩)。
(6)若x和y是两个整形变量,在执行了语句序列 x=5; y=6; y+=x--;
后,x+y的值为 【6】 。 (7)在执行语句序列
int i=0; do i++; while(i*i<10);
时,do后面的循环体语句i++被执行的次数为 【7】 。
(8)有如下的函数定义: int Xfun(int *a, int n){ int x=*a;
for(int *pa=a+1; pa<> if(*pa>x) x=*pa; return x; }
若执行了语句
int x[5]={23,46,78,55,16};
后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为 【8】 。
(9)有如下的函数定义: int Xfun(int x){ int y=x;
{int x=10; y+=x;} return x+y; }
通过表达式Xfun(5)调用该函数,则得到的返回值为 【9】 。
(10)假定Xcs是一个类,该类中一个成员函数的原型为―Xcs *abc();‖,则在类外定义时对应的函数头为 【10】 。
9
(11)请将下面的类Date的定义补充完整,使得由语句
Date FirstDay;
定义的对象FirstDay的值为2010年1月1日。 class Date{ public:
Date( 【11】 ):year(y),month(m),day(d){ } private:
int year,month,day; //依次表示年、月、日 };
(12)请将下面的程序补充完整,使得程序输出―飘是张娜的书‖。 #include
using namespace std; class Book{ public:
Book(char *str) {strcpy(title,str);} 【12】 void PrintInfo() {cout<
class MyBook:public Book{ public:
MyBook(char *s1,char *s2=\张娜\【13】 {strcpy(owner,s2);}
virtual void PrintInfo() {cout<
char owner[10]; };
int main(){
Book *prt=new MyBook(\飘\ prt->PrintInfo(); return 0; }
(13)在有理数类Rational中重载插入运算符<<,以便按a/q形式输出。请将<<运算符函数的定义补充完整。 class Rational{ public:
Rational(int aa, int qq):a(aa),q(qq){ } friend 【14】 operator<<(ostream &out, Rational &x) {
return (out<
private: int a,q;
10
};
(14)下面的函数定义是某函数模板能够生成的函数实例
int square(int n) {return n*n;}
double square(double n) {return n*n;}
由此可知,该函数模板的定义是 【15】 。
2007年4月计算机等级考试C++考试及答案 一、选择题(每小题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是 。
A)算法的效率只与问题的规模有关,而与数据的存储结构无关.
B)算法的时间复杂度是指执行算法所需要的计算工作量
C)数据的逻辑结构与存储结构是一一对应的. D)算法的时间复杂度与空间复杂度一定相关. (2)在结构化程序设计中,模块划分的原则是 。 A) 各模块应包括尽量多的功能 B) 各模块的规模应尽量大
C)各模块之间的联系应尽量紧密
D) 模块内具有高内聚度,模块间具有低耦合度 (3)下列叙述中正确的是 。
A)软件测试的主要目的是发现程序中的错误. B)软件测试的主要目的是确定程序中错误的位置. C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作
D)软件测试是证明软件没有错误
(4) 下面选项中不属于面向对象程序设计特征的是 。 A)继承性 B)多态性 C)类比性 D)封装性 (5) 下列对列的叙述正确的是 。 A) 队列属于非线性表
B) 队列按‖先进后出‖的原则组织数据 C)队列在队尾删除数据
D) 队列按―先进先出‖原则组织数据 (6)对下列二叉树 A)DYBEAFCZX B)YDEBFZXCA C)ABDYECFXZ D)ABCDEFXYZ
(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
A)n+1 B )n-1 C)2n D)n/2
(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。