第 1 页:选择题 |
第 3 页:程序改错题 |
第 4 页:简单应用题 |
第 5 页:综合应用题 |
21设有定义语句int(*f)(int);,则下列叙述正确的是( )。
A.f是基类型为int的指针变量
B.f是指向函数的指针变量,该函数具有一个int类型的形态
C.f是指向int类型一维数组的指针变量
D.f是函数名,该函数的返回值是其类型为int类型的地址
参考答案:B
参考解析:定义语句int(*f)(int)中f是指向函数的指针变量,该函数中也只有一个int型的形参。
22为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是( )。
A.+B.=C.<
参考答案:B
参考解析:赋值运算符只能作为重载函数的成员函数,其他运算符都可以作为友元函数重载。
23有两个关系R和T如下所示:
则由关系R得到关系T的操作是( )。
A.选择B.投影C.交D.并
参考答案:A
参考解析:选择是建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特定标准的原始关系行。
24下列叙述中错误的是( )。
A.gets函数用于从终端读入字符串
B.getchar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
参考答案:B
参考解析:本题考查的是c语言中输入、输出函数的使用,gets和getchar函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。
25下列程序的执行结果是( )。
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"<
else
cout<<"x!=y"<
}
voiddisp()
{
cout<<"x="<
};
voidmain()
{
Samples1(2,3);
s1.disp();
}
A.x=2,y=2B.x=3,y=3C.x=2,y=3D.x=3,y=2
参考答案:C
参考解析:本题考查类的构造函数 和析构函数。首先,Samplesl(2,3);会调用含有两个参数的构造函数Sam-ple(inta,intb){x=a;y=b;),disp()函数输出成员变量x和y的值x=2,y=3;然后结束时调用析构函数。因为x和y值不等,故输出X!=Y。
26有如下程序:
#included
usingnamespqcestd;
classTestClass
{
private;
charC;
public;
TestClass(charn):c(n){}
~TestClass()
{
cout<
}
};
classTestClassl:publicTestClass
{
private:
charC;
public:
TestClassl(charn):TestClass(n+1),c(n){}~TestClassl()
{
cout<
}
};
intmain()
{
TestClasslobj('X');
return0;
}
执行上面的程序将输出( )。
A.xyB.yxC.XD.y
参考答案:A
参考解析:本题中FestClass为基类,TestClass1为派生类。在主函数中定义TestClassl对象obj('x'),“TestClassl(charn):TestClass(n+1),c(n){}”,所以输出x,然后调用基类构造函数,'x'+1='y',所以输出y,即答案为xy。
27已知类MyClass的定义如下:
ClassMyClass{
public:
MyClass(intd){data=d;}
~MyClass(){}
private:
intdata;
};
下列对MyClass类对象数组的定义和初始化语句中,正确的是( )。
A.MyClassarray[2];
B.MyClassarray[2]={MyClass(5)};
C.MyClassarray[2]={MyClass(5),Myclass(6)};
D.MyClass*array=newMyClass[2];
参考答案:C
参考解析:A只是声明,没有初始化;B的初始化错误,另一个数组对象没有指明地址;D同样做的不是初始化的事情。
28下列关于二叉树的叙述中,正确的是( )。
A.叶子结点总是比度为2的结点少一个
B.叶子结点总是比度为2的结点多一个
C.叶子结点数是度为2的结点数的两倍
D.度为2的结点数是度为1的结点数的两倍
参考答案:B
参考解析:叶子结点个数一度为2的结点个数+1。
29下列是关于派生类声明的开始部分,其中正确的是( )。
A.classvirtualB:publicA
B.virtualclassB:publicA
C.classB:publicAvirtual
D.classB:virtualpublicA
参考答案:D
参考解析:声明派生类的一般形成为class派生类名:[继承方式]基类名。其中继承方式包括public、private和protected。而virtual为C++中的关键字,所以选项C错。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。
30针对数组定义intdata[10];,下列表述中错误的是( )。
A.用*data可访问到数组的首元素
B.用data[9]可访问到数组的末元素
C.用data[10]访问数组元素会超出数组边界
D.data共有10个元素,其首元素是data[1]
参考答案:D
参考解析:数组元素的下标是从0到<数组长度>-1,所以数组data的首元素是data[0],尾元素是data[9]。其他选项的描述都是正确的。
31下列关于纯虚函数与抽象类的描述中,错误的是( )。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具有纯虚函数的类
C.一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
参考答案:C
参考解析:纯虚函数是在声明虚函数时被“初始化”为0的虚函数。不定义对象而只作为一种基本类型作为继承的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。抽象类的作用是作为一个类族的共同基类。
32若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
A.Data+{Data};
B.Dataoperator+{Data};
C.Data+operator{Data};
D.operator+{Data.Data};
参考答案:B
参考解析:重载运算符的函数一般格式如为:函数类型0perator运算符名称(形参列表),因此选8。
33下列关于构造函数和析构函数的描述,错误的是( )。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D.构造函数可以声明为虚函数
参考答案:D
参考解析:构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。
34设有如下三个关系表:
下列操作中正确的是( )。
A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S
参考答案:C
参考解析:关系代数中的集合运算有并、差、交和笛卡儿积四种。根据本题关系T中的元组可知,它是由关系R和关系S进行笛卡儿积运算得到的。第34题 笔记记录我的笔记(0) | 精选笔记(0)选择笔记标签:试题内容(0)答案解析(0)
35类模板的使用实际上是将类模板实例化成一个具体的( )。
A.类B.对象C.函数D.模扳类
参考答案:A
参考解析:类模板就是把畿中的数据分离出来,作为一个类的描述。C++编译器根据类模板和特定的数据类型来产生一个类,类模板就是一个抽象的类。
36有如下程序:
#included
usingnamespacestd;
classTestClass{
protected:
TestClass( ){cout<<'X';}
TestClass(charc){cout<
classTestClassl:publicTestClass{
public:
TestClassl(charc){cout<
intmain( ){
TestClassld1('y');
return0;}
执行这个程序,屏幕上将显示输出( )。
A.yB.yxC.xyD.yy
参考答案:C
参考解析:本题中类TestClass为基类,TestClassl为TestClass的派生类。由main主函数入手,定义TestClassl类型的对象dl,参数值为y。TestClassl类继承TestClass,所以主函数中“TestClassldl('y');”语句首先调用“TestClassl(charc){colll<
37下面程序的运行结果是( )。
#include
classbase{
protected:
inta;
public:
base(){cout<<"0";}
};
classbasel:virtualbase{
public:
basel(){cout<<"1";}
};
classbase2:virtualbase{
public:
base2(){cout<<"2";}
};
classderived:publicbasel,publicbase2{
public:
derived(){cout<<"3";}
};
voidmain()
{
derivedobj;
eout<
}
A.0123B.3120C.O312D.3012
参考答案:A
参考解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。
38下列字符串中可以用作C++语言标识符的是( )。
A.1234B.foo~~barC.virtualD.34var
参考答案:A
参考解析:C++语言标识符只能由数字、字母和下画线组成,并且只能以字母和下画线为开头。
39下列有关数据库的叙述,正确的是( )。
A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
参考答案:D
参考解析:数据处理是指将数据转换成信息的过程,故选项A叙述错误;数据的物理独立性是指数据的物理结构的改变不会影响数据库的逻辑结构,故选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项c叙述错误。
40下面有关重载函数的描述中正确的是( )。
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须具有不同的形参列表
D.重载函数名可以不同
参考答案:C
参考解析:所谓函数重载,是指同一个函数名可以对应多个函擞的实现,进行函数重载时,要求同名函数的参数个数不同,或者参数类型不同。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |