- 相关推荐
上半年全国计算机二级C++考试真题
一、选择题
(1)下列叙述中正确的是
A)栈是“先进先出”的线性表
B)队列是“先进后出”的线性表
C)循环队列是非线性结构
D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
(2)支持子程序调用的数据结构是
A)栈
B)树
C)队列
D)二叉树
(3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是
A)10
B)8
C)6
D)4
(4)下列排序方法中,最坏情况下比较次数最少的是
A)冒泡排序
B)简单选择排序
C)直接插入排序
D)堆排序
(5)软件按功能可以分为: 应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是
A)编译程序
B)操作系统
C)教务管理系统
D)汇编程序
(6)下面叙述中错误的是
A)软件测试的目的是发现错误并改正错误
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A)提高耦合性降低内聚性有利他哦高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是
A)数据库设计
B)数据库系统设计
C)数据库维护
D)数据库管理员培训
(9)有如下程序:
#include
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
(10)将E-R图转换为关系模式时,实体和联系都可以表示为
A)属性
B)键
C)关系
D)域
(11)对C++编译器区分重载函数无任何意义的信息是
A)参数类型
B)参数个数
C)返回值类型
D)常成员函数关键字coast
(12)有如下类定义和变量定义:
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);
(13)有如下类定义和变量定义:
class Parents{
public:
int publicuata;
private:
int privateData;
};
class ChildA:public Parents{/*类体略*/};
class ChildB:private Parents{/*类体略*/);
ChildA a;
ChildBb;
下列语句中正确的是
A)cout< B)cout< C)cout< D)cout<
(14)运算符重载时不需要保持的性质是
A)操作数个数
B)操作数类型
C)优先级
D)结合性
(15)下列关于函数模板的描述中,错误的是
A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准
B)对于常规参数所对应的模板实参,任何情况下都不能省略
C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参
D)模板参数表不能为空
(16)要建立文件流并打开当前目录下的文件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”);
(17)下列描述中,不属于面向对象思想主要特征的是
A)封装性
B)跨平台性
C)继承性
D)多态性
(18)有如下程序段:
Tnt i=4;int j=l;
int main(){
int i=8,j=i;
cout< }
运行时的输出结果是
A)44
B)41
C)88
D)81
(19)有如下程序段:
int i=5;
while(int i=0){cout《'*';i--;}
运行时输出“*”的个数是
A)0
B)1
C)5
D)无穷
(20)己知有数组定义
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]
(21)已知函数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);
(22)建立一个类对象时,系统自动调用
A)析构函数
B)构造函数
C)静态函数
D)友元函数
(23)通过派生类的对象可直接访问其
A)公有继承基类的公有成员
B)公有继承基类的私有成员
C)私有继承基类的公有成员
D)私有继承基类的私有成员
(24)己知表达式++a中的“++”是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为
A)a .orerator++(1)
B)operator++(a)
C)operator++(a,l)
D)a.operator++( )
(25)在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是
A)( )
B)[ ]
C)< >
D){ }
(26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为
A)ios_base::in
B)ios_base::in|ios_base::out
C)ios_base::out
D)ios_base::in&ios_base::out
(27)有如下程序:
#include
#include
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< return 0;
}
运行时的输出结果是
A)12
B)16
C)14
D)11
(28)有如下程序:
#include
#include
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< int Geta(){return a;}
};
int main(){
XCF dl(5),d7 (dl);
XCF *pd=new XCF(8);
cout
delete pd;
return 0;
}
运行时的输出结果是
A)121SS88
B)12188SS
C)12185
D)128512
(29)已知类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)};
(30)有如下程序:
#include
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
(31)有如下类定义:
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 (int m, int n):XX (m),yy(n){cout< };
下列选项中,输出结果为A0的语句是
A)YY y1(0,0);
B)YY y2(1);
C)YY y3(0);
D)YY y4;
(32)有如下程序:
#include
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
(33)有如下程序:
#include
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;}
(34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是
A)cout< B)cout< C)cout<<123< D)cout<
二、填空题
(1)假设用一个长度为50的数组(数组元索的下标从0到49)作为栈的存化空间,栈底指针bottom指间栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。
(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。
(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。
(4)数据库系统的核心是【4】。
(5)在E-K图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。
(6)有如下程序段:
int x=1,Y=2,z=3;
x=x^z;
y=y^z;
z=x^y;
cout< 执行这个程序段的输出是【6】。
(7)有如下程序段:
fer(int i=1; i<=50;i++){
if(i%3 != 0)
continue;
else
if(i%5!=0)
continue;
tout< }
执行这个程序段的输出是【7】。
(8)有如下程序段:
Char c [20]=“examination”;
c[4]=0;
cout< 执行这个程序段的输出是【8】。
(9)下面的函数利用递归实现了求1+2+3+……+n的功能:
int sum(int n){
if(n==0)
return 0;
else
return n+sum(n-1);
}
在执行sum(10)的过程中,递归调用sum函数的次数是【9】。
(10)非成员函数应该声明为类【10】函数才能访问该类的私有成员。
(11)有如下程序:
#include
using namespace std;
class Monitor{
public:
Monitor(char t):type (t){}
void print( ) const
{cout<<“The type of monitor is”< private:
char type;
};
class Computer{
public:
Computer(int i,char c): 【11】{}
void Print()const
{cout<<“The computer is”< 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
(12)有如下程序:
#include
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< void speak(Animal a) {cout< int main( ) {
Dog d; type (d);cout<<“ speak”;speak(d);cout< return 0;
}
运行时的输出结果是【12】。
(13)补充完整下面的类定义:
const double PI=3 .14;
class Circle{ //圆形物体的抽象基类
protected:
double r; //半径
public:
Circle(double radius=0):r(radius){}
【13】;//计算圆形物体表面积的纯虚函数声明
};
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);
}
};
(14)补充完整下面的类定义:
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)
【14】;
}
~XCH() {delete []a;}
};
(15)补充完整下面的模板定义:
template //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
【15】::Mult(){return a*b;} //Mult 函数的类外定义
【上半年全国计算机二级C++考试真题】相关文章:
全国计算机二级考试C++真题03-21
全国计算机二级考试《C++》笔试样卷06-12
计算机等级考试二级C++笔试选择题04-23
全国计算机二级《C++》上机试题及答案03-28
全国计算机等级二级考试java选择题练习04-18