计算机类 二级 C++
2009年3月全国计算机等级考试C++语言笔试试卷 50 题 含答案 C++
1 单选题 1 / 50
下列叙述中正确的是
A 栈是“先进先出”的线性表 B 队列是“先进后出”的线性表 C 循环队列是非线性结构 D 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
查看答案 D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
2 单选题 2 / 50
支持子程序调用的数据结构是
A 栈 B 树 C 队列 D 二叉树
查看答案 A. 栈
3 单选题 3 / 50
某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
A 10 B 8 C 6 D 4
查看答案 C. 6
4 单选题 4 / 50
下列排序方法中,最坏情况下比较次数最少的是
A 冒泡排序 B 简单选择排序 C 直接插入排序 D 堆排序
查看答案 D. 堆排序
5 单选题 5 / 50
软件按功能可以分为:应用软件、系统软件和支撑软件〔或工具软件)。下面属于应用软件的是
A 编译程序 B 操作系统 C 教务管理系统 D 汇编程序
查看答案 C. 教务管理系统
6 单选题 6 / 50
下面叙述中错误的是
A 软件测试的目的是发现错误并改正错误 B 对被调试的程序进行“错误定位”是程序调试的必要步骤 C 程序调试通常也称为Debug D 软件测试应严格执行测试计划,排除测试的随意性
查看答案 A. 软件测试的目的是发现错误并改正错误
7 单选题 7 / 50
耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A 提高耦合性降低内聚性有利于提高模块的独立性 B 降低耦合性提高内聚性有利于提高模块的独立性 C 耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D 内聚性是指模块间互相连接的紧密程度
查看答案 B. 降低耦合性提高内聚性有利于提高模块的独立性
8 单选题 8 / 50
数据库应用系统中的核心问题是
A 数据库设计 B 数据库系统设计 C 数据库维护 D 数据库管理员培训
查看答案 A. 数据库设计
9 单选题 9 / 50
有两个关系R,S如下由关系R通过运算得到关系S,则所使用的运算为
A 选择 B 投影 C 插入 D 连接
查看答案 B. 投影
10 单选题 10 / 50
将E-R图转换为关系模式时,实体和联系都可以表示为
A 属性 B 键 C 关系 D 域
查看答案 C. 关系
11 单选题 11 / 50
对C++编译器区分重载函数无任何意义的信息是
A 参数类型 B 参数个数 C 返回值类型 D 常成员函数关键字coast
查看答案 A. 参数类型
12 单选题 12 / 50
有如下类定义和变量定义: class A{ publie: A(){data=0;} ~A(){} int GetData ( ) coast { return data;} void SetData(int n) {data=n;} private: int data; }; ccnst A a; A b; 下列函数调用中错误的是
A a .GetData(); B a .SetData(10); C b .GetData(); D b .SetData(10);
查看答案 D. b .SetData(10);
13 单选题 13 / 50
有如下类定义和变量定义: class Parents{ public: int publicuata; private: int privateData; }; class ChildA:public Parents{/*类体略*/}; class ChildB:private Parents{/*类体略*/); ChildA a; ChildBb; 下列语句中正确的是
A cout<<a.publicData <<endl ; B cout<<a.privateData <<endl ; C cout<<b.publicData <<endl ; D cout<<b.privateData <<endl ;
查看答案 B. cout<<a.privateData <<endl ;
14 单选题 14 / 50
运算符重载时不需要保持的性质是
A 操作数个数 B 操作数类型 C 优先级 D 结合性
查看答案 B. 操作数类型
15 单选题 15 / 50
下列关于函数模板的描述中,错误的是
A 从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准 B 对于常规参数所对应的模板实参,任何情况下都不能省略 C 虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参 D 模板参数表不能为空
查看答案 C. 虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参
16 单选题 16 / 50
要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是
A ifstream fin=ifstream.open("file.dat"); B ifstream*fir.=new ifstream("file.dat"); C ifstream fin; fin.open("file.dat"); D ifstream *fin=new ifstream( );fin一>open("file.dat");
查看答案 D. ifstream *fin=new ifstream( );fin一>open("file.dat");
17 单选题 17 / 50
下列描述中,不属于面向对象思想主要特征的是
A 封装性 B 跨平台性 C 继承性 D 多态性
查看答案 B. 跨平台性
18 单选题 18 / 50
有如下程序段: Tnt i=4;int j=l; int main(){ int i=8,j=i; cout<<i<<j<<endl; } 运行时的输出结果是
A 44 B 41 C 88 D 81
查看答案 B. 41
19 单选题 19 / 50
有如下程序段: int i=5; while(int i=0){cout《'*';i--;} 运行时输出"*"的个数是
A 0 B 1 C 5 D 无穷
查看答案 B. 1
20 单选题 20 / 50
己知有数组定义 char a[3][4]; 下列表达式中错误的是
A a[2]="WIN" B strcpy(a[2],"WIN") C a [2][3]='W' D a[0][1]=a[0][1]
查看答案 C. a [2][3]='W'
21 单选题 21 / 50
已知函数fun的原型为 int fun(int,int,int); 下列重载函数原型中错误的是
A char fun(int,int); B double fun(int,int,double); C int fun(int,char*); D float fun (int, int, int);
查看答案 B. double fun(int,int,double);
22 单选题 22 / 50
建立一个类对象时,系统自动调用
A 析构函数 B 构造函数 C 静态函数 D 友元函数
查看答案 B. 构造函数
23 单选题 23 / 50
通过派生类的对象可直接访问其
A 公有继承基类的公有成员 B 公有继承基类的私有成员 C 私有继承基类的公有成员 D 私有继承基类的私有成员
查看答案 A. 公有继承基类的公有成员
24 单选题 24 / 50
己知表达式++a中的"++"是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为
A a .orerator++(1) B operator++(a) C operator++(a,l) D a.operator++( )
查看答案 D. a.operator++( )
25 单选题 25 / 50
在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是
A ( ) B [ ] C < > D { }
查看答案 B. [ ]
26 单选题 26 / 50
当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为
A ios_base::in B ios_base::in|ios_base::out C ios_base::out D ios_base::in&ios_base::out
查看答案 A. ios_base::in
27 单选题 27 / 50
有如下程序: #include<iostream> #include<cstring> using namespace std; class XCD{ char* a; int b; public: XCD(char* aa, int bb){ a=new char[strlen(aa)+1]; strcpty(a,aa); b=bb; } Char* Geta (){return a;) int Getb(){ return b;} }; int main(){ char *pl="abcd",*p2="weirong"; int dl=6, d2=8; XCD x(pl,dl),Y(p2,d2); cout<<strien (x .Geta())+y. Getb()+endl; return 0; } 运行时的输出结果是
A 12 B 16 C 14 D 11
查看答案 A. 12
28 单选题 28 / 50
有如下程序: #include<iostream> #include<cstring> using namespace std; class XCF{ int a; public: XCF(int aa=0):a (aa){cout<<"1";} XCF(XCF& x){a=x .a; cout<<"2";) ~XCF(){cout<<a;} int Geta(){return a;} }; int main(){ XCF dl(5),d7 (dl); XCF *pd=new XCF(8); cout<<pd一>Geta(); delete pd; return 0; } 运行时的输出结果是
A 121SS88 B 12188SS C 12185 D 128512
查看答案 A. 121SS88
29 单选题 29 / 50
已知类MyClass声明如下: class MyClass{ int n; public; MyClass(int k):n(k){} int getValue()const{return n;} }; 在下列数组定义中正确的是
A MyClass x1[2]; B MyClass x2[2]={new MyClass(1),new MyClass(2)}; C MyClass *x3[2]; D MyClass *x4[2]={MyClass(1),MyClass(2)};
查看答案 C. MyClass *x3[2];
30 单选题 30 / 50
有如下程序: #include<iostream> using namespace std; class AA{ lilt k; protected: int n; void setK(int k){ this->k=k;} public: void setN(int n){ this->n=n;} }; class BB: public }{/*类体略*/}; int main(){ BB x_ ; //1 x .n=1; //2 x.setN (2); //3 x.k=3; //4 x .setK(4); return 0; } 在标注号码的四条语句中正确的是
A 1 B 2 C 3 D 4
查看答案 D. 4
31 单选题 31 / 50
有如下类定义: class XX{ int xx; public: XX():xx(0){cout<<' A';} XX(int n):xx ( n){tout<<' B';} }; Class YY:public XX{ Int yy; public: YY():yy ( 0){cout+yy;} YY(int n):XX(n+1),yy(n){cout<<yy;} YY (int m, int n):XX (m),yy(n){cout<<yy;} }; 下列选项中,输出结果为A0的语句是
A YY y1(0,0); B YY y2(1); C YY y3(0); D YY y4;
查看答案 C. YY y3(0);
32 单选题 32 / 50
有如下程序: #include<iostream> Using namespace std; class A{ public: virtual void f(){cout+1;} void g(){cout<<2;} }; class B:public A{ public: virtual void f(){cout<<3;} void g(){ecut<<4;} }; void show(A &a){a.f();a.g( );} int main(){ B b; show(b); return 0; } 运行时的输出结果是
A 12 B 34 C 14 D 32
查看答案 A. 12
33 单选题 33 / 50
有如下程序: #include<iostream> using namespace std; class Pair{ int m; int n; public: Pair(int i,int j):m(i),n(j){} boot operator >(pair p)const; //须在类体外给出定义 }; int main(){ Pair Al(3,4),p2(4,3);p3(4,5); Cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2); return 0; } 运算符函数。operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是
A bool Pair::operator>(Pair p)const {if (m!=p.m) return m>p.m; return n>p.n;} B bool Pair:;operator>(Pair p) {if (m!=p.m) return m>p.m; return n>p.n;} C bool Pair::operator>(Pair p)const {if (m>p.m) return true; return n>p.n;} D bool Pair:;operator>(Pair p) {if (m>p.m) return true; return n>p.n;}
查看答案 A. bool Pair::operator>(Pair p)const {if (m!=p.m) return m>p.m; return n>p.n;}
34 单选题 34 / 50
假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是
A cout<<setfill('*')<<123<<setw(9)<<321; B cout<<setfill('*')<<setw(6)<<left<<123<<setw(6)<<right<<321; C cout<<123<<setfill('*')<<setw(6)<<321; D cout<<setfill('*')<<SetW(9)<<left<<123<<321;
查看答案 C. cout<<123<<setfill('*')<<setw(6)<<321;
35 单选题 35 / 50
有如下程序: #include<iostream> using namespace std; class ONE{ int c; public: ONE():c(0){cout<<1;} ONE(int n):c (n){cout<<2;} }; class TWO{ ONE onel; ONE one2; public: TWO(int m):one2(m){cout<<3;} }; int main()t TWO t(4) return 0 } 运行时的输出结果是
A 3 B 23 C 123 D 213
查看答案 D. 213
36 填空题 36 / 50
假设用一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有__ 个元素。
查看答案 19
37 填空题 37 / 50
软件测试可分为白盒测试和黑盒测试。基本路径测试属于 __ 测试。
查看答案 白盒
38 填空题 38 / 50
符合结构化原则的三种基本控制结构是:选择结构、循环结构和 __ 。
查看答案 顺序结构
39 填空题 39 / 50
数据库系统的核心是 __ 。
查看答案 数据库管理系统
40 填空题 40 / 50
在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 __ 框。
查看答案 菱形
41 填空题 41 / 50
有如下程序段: int x=1,Y=2,z=3; x=x^z; y=y^z; z=x^y; cout<<x<<y<<z; 执行这个程序段的输出是__ 。
查看答案 100
42 填空题 42 / 50
有如下程序段: fer(int i=1; i<=50;i++){ if(i%3 != 0) continue; else if(i%5!=0) continue; tout<<i<<","; } 执行这个程序段的输出是__ 。
查看答案 Line1.x1 或 Line1.x2
43 填空题 43 / 50
有如下程序段: Char c [20]="examination"; c[4]=0; cout<<c<<endl; 执行这个程序段的输出是__ 。
查看答案 Image1.Left
44 填空题 44 / 50
下面的函数利用递归实现了求1+2+3+……+n的功能: int sum(int n){ if(n==0) return 0; else return n+sum(n-1); } 在执行sum(10)的过程中,递归调用sum函数的次数是__ 。
查看答案 KeyAscii
45 填空题 45 / 50
非成员函数应该声明为类__ 函数才能访问该类的私有成员。
查看答案 Combo1.Text
46 填空题 46 / 50
有如下程序: #include<iostream> using namespace std; class Monitor{ public: Monitor(char t):type (t){} void print( ) const {cout<<"The type of monitor is"<<type<<endl;} private: char type; }; class Computer{ public: Computer(int i,char c): __ {} void Print()const {cout<<"The computer is"<<id<<endl;mon.Print();} private: int id; Monitor mon; }; const Computer myComputer(101,'B'); myComputer .Print(); return 0; } 请将程序补充完整,使程序在运行时输出: The computer is 101 'The type of monitor i.s 8
查看答案 Input
47 填空题 47 / 50
有如下程序: #include <iostream> using namespace std class Animal{ public: virtual char* getType()const { return "Animal";} virtual char* getVoice()const { return "Voice";} }; Class Dog : public Animal { public: char* getType ( ) const {return "Dog";} char* getVoice ( ) const {return "Woof"} }; void type(Animal& a) {cout<<a.getType();} void speak(Animal a) {cout<<a.getVoice();} int main( ) { Dog d; type (d);cout<<" speak";speak(d);cout<<endi; return 0; } 运行时的输出结果是__ 。
查看答案 ch
48 填空题 48 / 50
补充完整下面的类定义: const double PI=3 .14; class Circle{ //圆形物体的抽象基类 protected: double r; //半径 public: Circle(double radius=0):r(radius){}__ ;//计算圆形物体表面积的纯虚函数声明 }; class Cylinder:public Circle { //圆柱体类 double h; //高度 public: Cylindr(double radius=0, doubli height=0): Circle(radius),h (height){} Virtual double Area() { //计算圆柱体的表面积 return 2*PI*r*(r+h); } };
查看答案 Len(mystr)
49 填空题 49 / 50
补充完整下面的类定义: class XCH{ char* a; public: XCH(char* as) { //构造函数 a=new char[strlen(aa)+1]; strcpy(a,aa); } XCH& operator=(const XCH& x) //重载赋值函数 Delele []a; A=new char[strlen(x.a)+l]; strcpy(a, x .a)__ ; } ~XCH() {delete []a;} };
查看答案 1
50 填空题 50 / 50
补充完整下面的模板定义: template<class Type> //Type为类型参数 class Xtwo{ //由两个Type类型的数据成员构成的模板类 Type a; Type b; public: Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){} int Ccmpare (){//比较a和b的大小 if (a>b)returm 1; else if(a==b) return 0; else return -1; } Type Snm() {return a+b;} //返回a和b之和 Type Mult(); //函数声明,返回a和b之乘积 }; Template<class Type>__ ::Mult(){return a*b;} //Mult 函数的类外定义
查看答案 a(k)