二级C++语言程序设计模拟试题及答案解析(20)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级C++语言程序设计模拟试题及答案解析(20)
(1/40)单项选择题
第1题
下列数据结构中,能用二分法进行查找的是( )。
A.无序线性表
B.线性链表
C.二叉链表
D.顺序存储的有序表
下一题
(2/40)单项选择题
第2题
下列叙述中,不属于设计准则的是( )。
A.提高模块独立性
B.使模块的作用域在该模块的控制域中
C.设计成多入口、多出口模块
D.设计功能可预测的模块
上一题下一题
(3/40)单项选择题
第3题
下列队列的描述中,正确的是( )。
A.队列属于非线性表
B.队列在队尾删除数据
C.队列按“先进后出”进行数据操作
D.队列按“先进先出”进行数据操作
上一题下一题
(4/40)单项选择题
第4题
对下列二叉树进行前序遍历的结果为( )。
图片
A.ABCDEFGH
B.ABDGEHCF
C.GDBEHACF
D.GDHEBFCA
上一题下一题
(5/40)单项选择题
第5题
对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。
A.冒泡排序为n(n一1)/2
B.简单插入排序为n
C.希尔排序为n
D.快速排序为n/2
上一题下一题
(6/40)单项选择题
第6题
为了使模块尽可能独立,要求( )。
A.内聚程度要尽量高,耦合程度要尽量强
B.内聚程度要尽量高,耦合程度要尽量弱
C.内聚程度要尽量低,耦合程度要尽量弱
D.内聚程度要尽量低,耦合程度要尽量强
上一题下一题
(7/40)单项选择题
第7题
下列选项中不属于软件生命周期开发阶段任务的是( )。
A.软件测试
B.概要设计
C.软件维护
D.详细设计
上一题下一题
(8/40)单项选择题
第8题
数据独立性是数据库技术的重要特点之一。
所谓数据独立性是指( )。
A.数据与程序独立存放
B.不同的数据被存放在不同的文件中
C.不同的数据只能被对应的应用程序所使用
D.以上三种说法都不对
上一题下一题
(9/40)单项选择题
第9题
在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。
A.一对一
B.一对多
C.多对一
D.多对多
上一题下一题
(10/40)单项选择题
第10题
软件调试的目的是( )。
A.发现错误
B.改善软件的性能
C.改正错误
D.验证软件的正确性
上一题下一题
(11/40)单项选择题
第11题
在公有派生时,派生类中定义的成员函数只能访问原基类的( )。
A.私有成员、保护成员和公有成员
B.保护成员和私有成员
C.公有成员和保护成员
D.公有成员和私有成员
上一题下一题
(12/40)单项选择题
第12题
有如下定义:
int b[10]={ 1,2,3,4,5,6,7,8,9,10},*q=b;
则数值为8的表达式是( )。
A.*q+8
B.*(q+7)
C.*q+=8
D.q+7
上一题下一题
(13/40)单项选择题
第13题
下面的符号中可以用作C++标识符的是( )。
A.3test
B.fcc~other
C.else
D.radius
上一题下一题
(14/40)单项选择题
第14题
下列程序执行后,输出的结果是( )。
int x=一5,y=0;
while(++x)
y++;
cout<<y<<endl;
A.1
B.2
C.4
D.5
上一题下一题
(15/40)单项选择题
第15题
有如下类声明:
class TestClass
{
int n;
public:
TestClass( int i=0):n(i){}
void setValue( int n0);
};
下面关于setValue成员函数的实现中,正确的是( )。
A.Testclass::setValue(intn0){n=n0;}
B.void Testclass::setValue (int n0){n=n0;}
C.void setValue(int n0){n=n0;}
D.setValue(intn0){n=n0;}
上一题下一题
(16/40)单项选择题
第16题
下面关于常成员函数的说法中正确的是( )。
A.常成员函数不能修改任何的数据成员
B.常成员函数只能修改一般的数据成员
C.常成员函数只能修改常数据成员
D.常成员函数只能通过常对象来调用
上一题下一题
(17/40)单项选择题
第17题
下面的函数调用为:fun(x+y,3,min(n一1,y))则fun的实参个数是( )。
A.3
B.4
C.5
D.6
上一题下一题
(18/40)单项选择题
第18题
下面关于虚函数的描述中,正确的是( )。
A.基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明
B.虚函数是非成员函数
C.虚函数是static类型的成员函数
D.派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型
上一题下一题
(19/40)单项选择题
第19题
有如下程序:
#include<iostream>
using namespace std;
class Base{
protected:
Base() {cout<<´Base´;}
Base(char c){cout<<c;}
};
class Derived:public Base{
public:
Derived(char c){cout<<c;}
};
mt main(){
Derived d(´Derived´);
return 0:
}
执行这个程序屏幕上将显示输出( )。
A.Derived
B.Derived Base
C.Base Derived
D.Derived Derived
上一题下一题
(20/40)单项选择题
第20题
有如下程序:
#include <iostream>
using namespace std;
int main()
{
cout.fill(´*´);
cout.width(6);
cout.fill(´#´);
cout<<888<<endl;
return 0;
}
的执行结果是( )。
A.###888
B.888###
C.***888
D.888***
上一题下一题
(21/40)单项选择题
第21题
假定一个类的构造函数为A(int aa,int bb){a=aa一一;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为( )。
A.3和15
B.5和4
C.4和20
D.20和5
上一题下一题
(22/40)单项选择题
第22题
在类中说明的成员可以使用关键字的是( )。
A.public
B.extern
C.cpu
D.register
上一题下一题
(23/40)单项选择题
第23题
下列不能作为类的成员的是( )。
A.自身类对象的指针
B.自身类对象
C.自身类对象的引用
D.另一个类的对象
上一题下一题
(24/40)单项选择题
第24题
使用地址作为实参传给形参,下列说法正确的是( )。
A.实参是形参的备份
B.实参与形参无联系
C.形参是实参的备份
D.参与形参是同二对象
上一题下一题
(25/40)单项选择题
第25题
下列程序的输出结果是( )。
#include <iostream.h>
void main0
{int n[][3]={10,20,30,40,50,60};int(*p)[3];
p=n;cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<end1;}
A.10,30,50
B.10,20,30
C.209 40,60
D.10,30,60
上一题下一题
(26/40)单项选择题
第26题
设程序如下:
#include<iostream>
using namespace std;
int main()
{
int **p,*q,r=10;
q=&r;
p=&q;
cout<<**p+1<<end1;
return 0:
}
以上程序的输出结果是( )。
A.p的地址
B.r的地址
C.11
D.运行错误
上一题下一题
(27/40)单项选择题
第27题
下面关于函数模板的表述中不正确的是( )。
A.类模板的成员函数都是模板函数
B.类模板本身在编译过程中不会产生任何代码
C.类模板只能有虚拟类型的参数
D.用类模板定义一个对象时,实参不能省略
上一题下一题
(28/40)单项选择题
第28题
下面类的声明中的几个语句,正确的是(设定语句足主函数中的语句)( )。
class TestClass
{
pnvate:
int data;
public:
TestClass (int g_data)
{
data=g_data;
}
void show() {cout<<data<<endl;}
};
A.Testclass *p;
B.Testclassm;
C.Testclass.data=8;
D.Testclass.show();
上一题下一题
(29/40)单项选择题
第29题
类中的一个字符指针成员指向具有m个字节的存储空间时,它所能存储的字符串的最大长度为( )。
A.m一2
B.m一1
C.m
D.m+1
上一题下一题
(30/40)单项选择题
第30题
有如下程序:
#include<iostream>
using namespace std;
class TestClass{
static int i;
public:
TestClass(){i++;)
~ TestClass (){i一一;}
static int getVal() {return i;}
};
int TestClass::i=0;
void f() {TestClass obj2;cout<<obj2.getVal();}
int main(){
TestClass obj 1;
f();
TestClass*obj3=new TestClass,cout<<obj3一>getVal();
delete obj3;cout<<TestClass::getVal();
return 0;
}
程序的输出结果是( )。
A.232
B.221
C.222
D.231
上一题下一题
(31/40)单项选择题
第31题
下面关于派生类的描述中错误的是( )。
A.派生类中至少有一个基类
B.一个派生类可以作为另一个派生类的基类
C.派生类只继承了基类中的公有成员和保护成员
D.派生类的缺省继承方式是私有
上一题下一题
(32/40)单项选择题
第32题
有如下程序:
#include<iostream>
using namespace std;
class TestClass
{
int n;
public:
TestClass (int k):n(k){}
int get(){return n;}
int get()const {return n+1;}
};
int main()
{
TestClass p(5);
const TestClass q(6);
cout<<p.get()<<q.get();
return 0:
}
执行后的输出结果是( )。
A.55
B.57
C.75
D.77
上一题下一题
(33/40)单项选择题
第33题
下列关于抽象类的表述中正确的是( )。
A.派生类必须要实现作为基类的抽象类中的纯虚函数
B.抽象类的成员函数至少有一个没实现
C.抽象类不可能用来定义对象
D.派生类不能成为抽象类
上一题下一题
(34/40)单项选择题
第34题
执行下列语句:
#include<iostream>
using namespace std;
int main()
{
int x=3;
if(x=5)
cout<<x++<<endl;
else
cout<<x<<endl;
return 0:
}
程序的输出是( )。
A.3
B.4
C.5
D.6
上一题下一题
(35/40)单项选择题
第35题
假定TestClass为一个类,则该类的拷贝构造函数的声明语句为( )。
A.Testclass (Testclass x)
B.Testclass&(Testclass x)
C.Testclass (Testclass *x)
D.Testclass (Testclass &x)
上一题下一题
(36/40)单项选择题
第36题
下面关于指针的说法中错误的是( )。
A.在指针定义的同时可以对其进行初始化
B.指针根据其所指向变量的类型的不同,所占用内存大小也不同
C.指针中存放的是内存单元的地址
D.相同类型的指针之间可以相互赋值
上一题下一题
(37/40)单项选择题
第37题
下面不属于C++的预定义的流对象是( )。
A.cin
B.iostream
C.c1og
D.cen
上一题下一题
(38/40)单项选择题
第38题
下列程序执行后,屏幕的输出是( )。
.
#include<iostream>
using namespace std;
void swap(int x,int y)
{
int temp=x;
x=y;
y=temp;
cout<<"x="<<x<<",y="<<y<<endl;
}
int main()
{
int x=3,y=2;
swap(x,y);
COUt<<"x="<<x<<",y="<<y<<endl;
return 0;
}
A.x=3,y=2 x=3,y=2
B.x=2,y=3 x=3,y=2
C.x=2,y=3 x=2,y=3
D.x=3,y=2 x=2,y=3
上一题下一题
(39/40)单项选择题
第39题
在每个C++程序中必须有且仅有一个( )。
A.函数
B.主函数
C.预处理指令
D.语句
上一题下一题
(40/40)单项选择题
第40题
有如下程序:
#include <iostream>
using namespace std;
classA
{
public:
A(){cout<<"A";)
};
classB{public:B(){cout<<"B";}};
class C:public A
{
B b:
public:
C(){cout<<"C";}
};
int main() {C obj;return 0;}
执行后的输出结果是( )。
A.ABC
B.BAC
C.ACB
D.CBA
上一题下一题
(1/1)基本操作题
第41题
使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:
10
Testclassl
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
#inc1ude<iostream>
class Testclassl
{
public:
Testclassl(){
};
//********error********
private:
virtual~Testclassl()
{
using namespace std;
cout<<"Testclassl"<<end1;
};
};
class Testclass2:public Testclassl
{
public:
explicit Testclass2(int i)
{
};
Testclass2& operator ()(int i)
{
this一>m_i = i;
void print()
{
cout<<m_i<<endl;
private:
intm_i;
};
void fun(Testclass2 c1)
{
C1.print();
int main()
´{
fun(10);
retum 0;
} ______
上一题下一题
(1/1)简单应用题
第42题
使用VC6打开考生文件夹下的源程序文件modi2.cpp。
请完成函数fun(char* s),该函数完成以下功能:
(1)把s中的大写字母转换成小写字母,把其中的小写字母转换成大写字母。
并且在函数中调用写函数WriteFile()将结果输出到mod12.txt文件中。
例如:s="helloTEST”,则结果为:s="HELLOtest"
(2)完成函数WriteFile(char*s),把字符串输入文件中。
提示:打开文件使用的第二参数为ios_base::binary|ios_ base::app。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
void WriteFile(char*s)
{
}
void fun(char*s)
{
}
void ClearFile()
{
ofstream outl;
outl.open("modi2.txt");
outl.close(),
}
int main()
{
ClearFile();
char s[1024];
cout<<"please input a string:"<<endl;
cin.getline(s,1024);
fun(s),
return 0;
} ______
上一题下一题
(1/1)综合应用题
第43题
用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照
定义的输出修改函数,使得输出如下:
TestClass3
TestClass2
TestClass1
其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。
(1)类TestClass2公共继承于TestClassl,请在注释//********1********后添加适当的语句。
(2) print函数为虚函数,请在注释//********2********后添加适当的语句。
(3)修改语句,使得p指定对象obj3,请在注释//********3********后添加适当的语句。
(4)修改语句,利用p调用print()函数,完成输出信息,注释//********4********后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
#include<iostream>
using namespace std;
class TestClassl
{
public:
void print(){
cout<<”Te stClassl”<<endl;
}
};
//********1********
class TestClass2
{
public:
//********2********
void print()
{
cout<<"TestClass2"<<endl;
}
};
class TestClass3:public TestClass2 {
public:
void print()
{
cout<<”TestClass3”<<endl;
}
};
int main()
{
TestClass2 0bj2;
TestClass3 0bj3;
TestClassl*p;
obj2.print();
obj 3.print();
//********3********
p=obj3;
//********4********
p.print();
return 0;
} ______
上一题交卷
交卷
答题卡
答案及解析
(1/40)单项选择题
第1题
下列数据结构中,能用二分法进行查找的是( )。
A.无序线性表
B.线性链表
C.二叉链表
D.顺序存储的有序表
参考答案: D 您的答案:未作答
答案解析:二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。
下一题
(2/40)单项选择题
第2题
下列叙述中,不属于设计准则的是( )。
A.提高模块独立性
B.使模块的作用域在该模块的控制域中
C.设计成多入口、多出口模块
D.设计功能可预测的模块
参考答案: C 您的答案:未作答
答案解析:大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中:深度、宽度、扇出和扇入适当:使模块的作用域在该模块的控制域中:应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块:设计功能可预测的模块。
上一题下一题
(3/40)单项选择题
第3题
下列队列的描述中,正确的是( )。
A.队列属于非线性表
B.队列在队尾删除数据
C.队列按“先进后出”进行数据操作
D.队列按“先进先出”进行数据操作
参考答案: D 您的答案:未作答
答案解析:队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。
队列的操作数是依据先进先出的原则进行的。
因此队列亦称作先进先出的线性表,或后进后出的线性表。
上一题下一题
(4/40)单项选择题
第4题
对下列二叉树进行前序遍历的结果为( )。
图片
A.ABCDEFGH
B.ABDGEHCF
C.GDBEHACF
D.GDHEBFCA
参考答案: B 您的答案:未作答
答案解析:遍历就是不重复地访问二叉树的所有结点。
二叉树遍历的方法有3种:前序遍
历、中序遍历和后序遍历。
记住3种遍历的顺序:
①前序,访问根一按前序遍历左子树一按前序遍历右子树。
②中序,按中序遍历左子树一访问根一按中序遍历右子树。
③后序,按后序遍历左子树一按后序遍历右子树一访问根。
所以对该二叉树的中序遍历结果为ABDGEHCF。
上一题下一题
(5/40)单项选择题
第5题
对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。
A.冒泡排序为n(n一1)/2
B.简单插入排序为n
C.希尔排序为n
D.快速排序为n/2
参考答案: A 您的答案:未作答
答案解析:在最坏情况下,冒泡排序所需要的比较次数为n(n一1)/2;简单插入排序所需要的比较次数为n(n一1)/2;希尔排序所需要的比较次数为0(n1.5);堆排序所需要的比较次数为0(nlog2n)。
上一题下一题
(6/40)单项选择题
第6题
为了使模块尽可能独立,要求( )。
A.内聚程度要尽量高,耦合程度要尽量强
B.内聚程度要尽量高,耦合程度要尽量弱
C.内聚程度要尽量低,耦合程度要尽量弱
D.内聚程度要尽量低,耦合程度要尽量强
参考答案: B 您的答案:未作答
答案解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。
在程序结构中,各模块的内聚性越强,则耦合性越弱。
一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
上一题下一题
(7/40)单项选择题
第7题
下列选项中不属于软件生命周期开发阶段任务的是( )。
A.软件测试
B.概要设计
C.软件维护
D.详细设计
参考答案: C 您的答案:未作答
答案解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。
上一题下一题
(8/40)单项选择题
数据独立性是数据库技术的重要特点之一。
所谓数据独立性是指( )。
A.数据与程序独立存放
B.不同的数据被存放在不同的文件中
C.不同的数据只能被对应的应用程序所使用
D.以上三种说法都不对
参考答案: D 您的答案:未作答
答案解析:数据独立性是数据与程序间的Ⅱ小依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。
所以选项A),选项B)和选项C)都不正确。
上一题下一题
(9/40)单项选择题
第9题
在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。
A.一对一
B.一对多
C.多对一
D.多对多
参考答案: B 您的答案:未作答
答案解析:一个班可以有多名学生,而一名学生只能属于—个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。
上一题下一题
(10/40)单项选择题
第10题
软件调试的目的是( )。
A.发现错误
B.改善软件的性能
C.改正错误
D.验证软件的正确性
参考答案: C 您的答案:未作答
答案解析:在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。
上一题下一题
(11/40)单项选择题
第11题
在公有派生时,派生类中定义的成员函数只能访问原基类的( )。
A.私有成员、保护成员和公有成员
B.保护成员和私有成员
C.公有成员和保护成员
D.公有成员和私有成员
参考答案: C 您的答案:未作答
答案解析:派生类中的成员,一部分是从基类继承来的,另一部分是自己定义的新成员,所有的这些成员也分为公有、私有和保护三种访问权限。
其中,从基类继承下来的全部成员构成派生类的基类,这部分的私有成员是派生类不能直接访问的,而公有成员和保护成员则是派生类可以直接访问的,但它们在派生类中的访问属性随着派生类对基类的继承方式而改
上一题下一题
(12/40)单项选择题
第12题
有如下定义:
int b[10]={ 1,2,3,4,5,6,7,8,9,10},*q=b;
则数值为8的表达式是( )。
A.*q+8
B.*(q+7)
C.*q+=8
D.q+7
参考答案: B 您的答案:未作答
答案解析:数组的下标是从0到数组的长度减1。
*(p+i)是取数组的第i+1个元素,即下标为i的元素。
因此*(p+7)取数组的第八个元素,即元素8。
上一题下一题
(13/40)单项选择题
第13题
下面的符号中可以用作C++标识符的是( )。
A.3test
B.fcc~other
C.else
D.radius
参考答案: D 您的答案:未作答
答案解析:C++标识符是以字母、下划线开头的,由字母、数字及下划线组成的,不与关键字相同的字符串。
选项C)中else为关键字。
上一题下一题
(14/40)单项选择题
第14题
下列程序执行后,输出的结果是( )。
int x=一5,y=0;
while(++x)
y++;
cout<<y<<endl;
A.1
B.2
C.4
D.5
参考答案: C 您的答案:未作答
答案解析:循环条件是++x,在c++中,对于非0值全都为真,0代表假。
x的初始值为一5,所以循环能进行4次。
上一题下一题
(15/40)单项选择题
第15题
有如下类声明:
class TestClass
{
int n;
public:
TestClass( int i=0):n(i){}
void setValue( int n0);
};
下面关于setValue成员函数的实现中,正确的是( )。
A.Testclass::setValue(intn0){n=n0;}
B.void Testclass::setValue (int n0){n=n0;}
C.void setValue(int n0){n=n0;}
D.setValue(intn0){n=n0;}
参考答案: B 您的答案:未作答
答案解析:C++中类成员函数的实现形式为:返回类型类名::成员函数名(参数列表){代码块}
上一题下一题
(16/40)单项选择题
第16题
下面关于常成员函数的说法中正确的是( )。
A.常成员函数不能修改任何的数据成员
B.常成员函数只能修改一般的数据成员
C.常成员函数只能修改常数据成员
D.常成员函数只能通过常对象来调用
参考答案: A 您的答案:未作答
答案解析:C++中使用const关键字来说明函数称为常成员函数,常成员函数不能更新对象中的数据成员。
上一题下一题
(17/40)单项选择题
第17题
下面的函数调用为:fun(x+y,3,min(n一1,y))则fun的实参个数是( )。
A.3
B.4
C.5
D.6
参考答案: A 您的答案:未作答
答案解析:在C++中,<形参列表>是由逗号分开的,分别说明函数的各个参数。
在fun ()函数中它包括三个形参:x+y,3和min(n一1,y);当调用一个函数时,实参与形参一对一匹配,所以实参个数也是3个。
上一题下一题
(18/40)单项选择题
第18题
下面关于虚函数的描述中,正确的是( )。
A.基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明
B.虚函数是非成员函数
C.虚函数是static类型的成员函数
D.派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型
参考答案: A 您的答案:未作答
答案解析:虚函数是非static类型的成员函数,基类中可以利用virtual关键字来声明虚函数,派生类中定义相同原型函数时可不必加virtual说明,直接重写基类中的函数。
在派生类中的虚函数必须与基类中的虚函数具有相同的参数个数与类型。
上一题下一题
(19/40)单项选择题
第19题
有如下程序:
#include<iostream>
using namespace std;
class Base{
protected:
Base() {cout<<´Base´;}
Base(char c){cout<<c;}
};
class Derived:public Base{
public:
Derived(char c){cout<<c;}
};
mt main(){
Derived d(´Derived´);
return 0:
}
执行这个程序屏幕上将显示输出( )。
A.Derived
B.Derived Base
C.Base Derived
D.Derived Derived
参考答案: C 您的答案:未作答
答案解析:派生类Derived由基类Base公有派生,在派生类构造函数声明时系统会自动调用基类的缺省构造函数。
调用Derived d(´Derived´);后,执行类Derived构造函数的Derived (char c),系统自动调用基类的缺省构造函数Base(),输出字母Base:再执行派生类的构造函数Derived(char c),输出字母Derived。
上一题下一题
(20/40)单项选择题
第20题
有如下程序:
#include <iostream>
using namespace std;
int main()
{
cout.fill(´*´);
cout.width(6);
cout.fill(´#´);
cout<<888<<endl;
return 0;
}
的执行结果是( )。
A.###888
B.888###
C.***888
D.888***
参考答案: A 您的答案:未作答
答案解析:CH在流操作中,利用cout对象的width属性设置输出字符的宽度,用fill函数来设置需要填充的字符。
题目程序中,首先设置填充字符为。
输出宽度为6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于888不足6个字符,所以在前面以三个“#”来填充。
上一题下一题
(21/40)单项选择题
第21题
假定一个类的构造函数为A(int aa,int bb){a=aa一一;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为( )。
A.3和15
B.5和4
C.4和20
D.20和5
参考答案: C 您的答案:未作答
答案解析:因为aa后减,所以a=4.b的值与a、bb相关b=4*5=20,与aa没有任何关系。
上一题下一题
(22/40)单项选择题
第22题
在类中说明的成员可以使用关键字的是( )。
A.public
B.extern
C.cpu
D.register
参考答案: A 您的答案:未作答
答案解析:extern用于声明外部变量的,register声明寄存器类型变量,无cpu类型。
它们都不能声明类成员。
public声明为公有访问权限。
上一题下一题
(23/40)单项选择题
第23题
下列不能作为类的成员的是( )。
A.自身类对象的指针
B.自身类对象
C.自身类对象的引用
D.另一个类的对象
参考答案: B 您的答案:未作答
答案解析:类的定义,如果有自身类对象,会使其循环定义,选项B)错误。
在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用,类中可以有另一个类的对象,即成员对象。
上一题下一题
(24/40)单项选择题
第24题
使用地址作为实参传给形参,下列说法正确的是( )。
A.实参是形参的备份
B.实参与形参无联系
C.形参是实参的备份
D.参与形参是同二对象
参考答案: D 您的答案:未作答
答案解析:地址作为实参,表示实参与形参代表同一个对象。
如果实参是数值,形参也是普通变量,此时形参是实参的备份。
上一题下一题
(25/40)单项选择题
第25题
下列程序的输出结果是( )。
#include <iostream.h>
void main0
{int n[][3]={10,20,30,40,50,60};int(*p)[3];
p=n;cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<end1;}
A.10,30,50
B.10,20,30
C.209 40,60
D.10,30,60
参考答案: B 您的答案:未作答
答案解析:如果数组元素都是相同类型的指针,则称这个数组为指针数组。
指针数组一般用于处理二维数组。
声明的格式为:<数据类型×(*变量名)×[元素个数]>。
p表示指向数组n的行指针,初始化“(*p)[3]=n;”,地址的等价形式:p+、p[i]、*(p+i)都表示数组第i+1行的第1个元素的首地址。
*(p+i)+j、p[i]+j、&p[i][j]都表示数组第i+1行、第j+1列元素的地址。
值的等价形式:+(*p+i)+j)、*(p[i]+j)、p[i]D]都表示数组第i+1、第j+1列元素的值。
所以本题中分别访问数组元素p[0][0],p[0][1],p[0][2]。
上一题下一题
(26/40)单项选择题
第26题
设程序如下:
#include<iostream>
using namespace std;
int main()
{
int **p,*q,r=10;
q=&r;
p=&q;
cout<<**p+1<<end1;
return 0:
}
以上程序的输出结果是( )。
A.p的地址
B.r的地址
C.11
D.运行错误
参考答案: C 您的答案:未作答
答案解析:p为一个二级指针,其存放的是指针变量q的地址,而q存放的又是r的地址。
故式子**p相当于对r的引用。
所以最后输出的结果为11。
上一题下一题
(27/40)单项选择题
第27题
下面关于函数模板的表述中不正确的是( )。
A.类模板的成员函数都是模板函数
B.类模板本身在编译过程中不会产生任何代码
C.类模板只能有虚拟类型的参数
D.用类模板定义一个对象时,实参不能省略
参考答案: C 您的答案:未作答
答案解析:类模板本身在编译时是不会产生代码的,只有在其实例化以后才产生代码。
定义一个对象时,不能省略其实参。
上一题下一题
(28/40)单项选择题
第28题
下面类的声明中的几个语句,正确的是(设定语句足主函数中的语句)( )。
class TestClass
{
pnvate:
int data;
public:
TestClass (int g_data)
{
data=g_data;
}
void show() {cout<<data<<endl;}
};
A.Testclass *p;
B.Testclassm;
C.Testclass.data=8;
D.Testclass.show();
参考答案: A 您的答案:未作答
答案解析:C++中,若没有类的显式声明构造函数则系统会为其提供一个默认的构造函数,若提供了构造函数则会将系统提供的默认的构造函数覆盖。
调用构造函数时,实参必须与形参匹配。
但是如果声明一个对象指针时,不是定义一个对象,不调用对象的构造函数。
上一题下一题
(29/40)单项选择题
第29题
类中的一个字符指针成员指向具有m个字节的存储空间时,它所能存储的字符串的最大长度为( )。
A.m一2
B.m一1
C.m
D.m+1
参考答案: B 您的答案:未作答
答案解析:在C++中,字符串以´\0´作为字符串结束的标志,所以个数为m一1。
上一题下一题
(30/40)单项选择题
第30题
有如下程序:
#include<iostream>
using namespace std;
class TestClass{
static int i;
public:
TestClass(){i++;)
~ TestClass (){i一一;}
static int getVal() {return i;}
};
int TestClass::i=0;
void f() {TestClass obj2;cout<<obj2.getVal();}
int main(){
TestClass obj 1;
f();
TestClass*obj3=new TestClass,cout<<obj3一>getVal();
delete obj3;cout<<TestClass::getVal();
return 0;
}
程序的输出结果是( )。
A.232
B.221
C.222
D.231
参考答案: B 您的答案:未作答
答案解析:由于i是类TestClass的静态成员,该成员被类的所有实例共享。
当定义objl。