东软培训考核试题答案内部资料Word文档格式.docx
- 文档编号:21969432
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:18
- 大小:20.30KB
东软培训考核试题答案内部资料Word文档格式.docx
《东软培训考核试题答案内部资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《东软培训考核试题答案内部资料Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
A)运行后将输出ChinaB)运行后将输出Ch;
C)运行后将输出ChiD)编译出错;
6、若有语句int*point,a=4;
和point=&
a;
下面均代表地址的一组选项是______。
A),point,*&
B)&
*a,&
a,*point;
C)*&
point,*point,&
D)&
a,&
*point,point;
7、语句int(*ptr)();
的含义是______。
A)ptr是指向一维数组的指针变量;
B)ptr是指向int类型的指针变量;
C)ptr是指向函数的指针,该函数返回一个int类型的数据;
D)ptr是一个函数名,该函数的返回值是指向int类型的指针;
8、若有以下定义和语句:
structstudent
{
intage;
intnum;
};
structstudentstu[3]={{1001,20},{1002,19},{1003,21}};
main()
{
structstudent*p;
p=stu;
...
}
则以下不正确的引用是______。
A)(p++)->
num;
B)p++;
C)(*p).num;
D)p=&
stu.age;
9、请正确指出下列指针的最确切的含义,int(*ptr)[3]、int*(*ptr)[4]、
void*(*ptr)(void*)______。
A)一个指针数组,数组元素的个数为3个;
一个指向4个元素数组的指针、数组的每个元素是一个指针;
一个函数的指针,这个函数的返回值还是个指针;
B)一个指向3个元素数组的指针;
C)一个指针数组,数组元素的个数为3个;
一个指针数组、数组的每个元素是一个指针;
D)一个指向3个元素数组的指针;
10、下程序的运行结果为_______?
intx=0,y=0;
voidfunc1(intx,inty)
x=5,y=6;
voidfunc2()
x=12,y=13;
voidmain(void)
func1(x,y);
printf(“%d,%d”,x,y);
func2();
printf(“%d,%d”,x,y);
A.5,6,12,13
B.0,0,12,13
C.5,6,0,0
D.0,0,0,0
11、请指出以下操作的各个结果_______
charstr[]=“Hello”;
char*pStr=str;
intn=60;
sizeof(str)=?
;
sizeof(pStr)=?
sizeof(n)=?
A)5,5,4B)6,4,4C)5,4,4D)6,4,2
12、已知一个类A有一个成员变量m_iValue,以及一个SetValue函数设置这个值,需要在构造的时候进行赋值。
以下几种方式中错误的是:
A)A:
:
A(intiValue){m_iValue=iValue;
B)A:
A(intiValue):
m_iValue(iValue){}
C)A:
A(intiValue){SetValue(iValue);
D)A:
SetValue(iValue){}
13、有一个类,定义如下:
classA{
public:
A()
m_iMaxValue++;
m_iValue=m_iMaxValue;
intGetValue(){returnm_iValue;
};
Staticintm_iMaxValue=0;
Intm_iValue;
在使用的时候,有如下操作
A*pObjectList=newA[100];
inta=pObjectList->
GetValue();
intb=(pObjectList+10)->
intc=pObjectList[99].GetValue();
请选则正确的结果是_______:
A:
a=0;
b=1;
c=1
B:
a=1,b=11c=100
C:
a=0,b=1c=100
D:
a=1,b=1c=1
14、有一个ClassA重载等号操作符,最良好和正确的方式是:
A:
A&
operator=(A&
orig)
B:
operator=(constA&
C:
constA&
orig)const
D:
operator=(A&
15、看以下代码:
classBase(){
Base(){m_pcDataBase=newchar[100]};
~Base(){deletem_pcDataBase}
char*pcDataBase;
classDerived():
publicBase{
Derived(){m_pcDataDerived=newchar[100];
~Derived(){deletem_pcDataDerived;
char*m_pcDataDrived;
有两个操作
2.Base*pData1=newBase;
deletepData1;
3.Base*pData2=newDerived;
deletepData2;
4.Derived*pData3=newDerived;
deletepData3;
5.Derived*pData4=newDerived[100];
deletepData4;
问题:
那几个操作会内存泄漏?
2,3,4B:
2,4C:
2,3D:
4
16、如果一个类继承了了另外一个类:
classDerived:
protectedBase{}
那么,Derived可以访问Base类中的那些成员:
__________
A:
全部
B:
公有的成员变量和成员函数
C:
公有的和保护的成员变量或函数
D:
保护的成员变量和函数
17、动态类型转换
classBase{
virtualvoidFunc(){m_iValue=1;
intm_iValue;
classDerived_A:
publicBase
virtualvoidfunc(){m_iValue=2;
classDerived_B:
有以下变量:
Base*p1=newDerived_A;
Base*p2=newDerived_B;
Derived_A*p3=newDerived_A;
Derived_B*p4=newDerived_B;
问题,以下四个操作中,返回值不等于NULL的有:
1:
Derived_A*p=dynamic_cast<
Derirved_A*>
p1;
2:
Derived_B*p=dynamic_cast<
Derirved_B*>
3:
Derived_B*p=static_cast<
4:
Derived_A*p=reinterpret_cast
<
p2;
1,2,3
1,3,4
1,2,3,4
1,2,4
18、有如下函数
voidf(intiValue)
if(iValue<
0){
throw“Thisisanegative”
}elseif(iValue>
100){
throwiValue;
在调用的地方
try{
f(1024.34);
catch(char*pData){
cout<
<
”Error:
“<
pData<
endl;
catch(intiValue){
iValue<
catch(doubledValue){
cout<
dValue<
则你认为的结果是:
_________
死机
Error:
Thisisanegative
1024
Error:
1024.34
19、请选出以下说法中错误的:
线程存在于进程之中,除了堆栈和CPU状态外,全部数据是共享的
之所以设计成多线程,是因为他可以是获得比单线程更快的运行速度。
进程比线程使用更多的系统资源,原因是它需要更多的地址空间
.
Windows被成为抢占式多线程操作系统,因为一个线程可以随时停止运行,然后另外一个线程进行调度
20、请看如下代码:
classBase
virtualvoidFunc1()=0;
virtualintFunc2(){printf(“%d”,m_iValue)}
virtualvoidFunc1(){printf(“%d”,m_iValue)}
有一段代码:
Base*pBase1=newBase;
pBase->
m_iValue=1;
Base*pBase2=newDerived;
pBase2->
m_iValue=2;
pBase1->
Func2();
Func1();
1,2
2,1
1,1
编译错误。
二、填空题(共30分)
1、(8分)一双向链表的节点定义为:
structstDulNode{
intiLeft,iRight,iTop,iBottom;
structstDulNode*pPrior;
structstDulNode*pNext;
stDulNode*pCurNode;
InsertNode(stDulNode*p);
DelNode(stDulNode*p);
现有在当前节点pCurNode前插入、删除函数,在空白处填上语句,使完整。
不考虑删除表头、表尾、在表头之前插入、表为空等各种特殊情况。
InsertNode(strDulNode*p)
pCurNode->
pPrior->
pNext=p;
p->
pPrior=pCurNode->
pPrior;
pNext=pCurNode;
pPrior=p;
DelNode(strDulNode*p)
pPrior->
pNext=p->
pNext;
pNext->
pPrior=p->
pPrior;
deletep;
2、(6分)阅读下列程序,填空,使栈的操作完整,
#defineMAXSIZE100
typedefstruct{
intstkData[MAXSIZE];
intiTop;
}STKZone;
BOOLPush();
BOOLPop();
以下是实现:
BOOLPush(intiElement,STKZone*pStack)
{//iElement是入栈元素
if(pStack->
iTop>
=MAXSIZE)
returnFALSE;
pStack->
stkData[pStack->
iTop++]=iElement;
returnTRUE;
BOOLPop(int*pRet,STKZone*pStack)
{//假如栈不为空
//pRet为返回元素的指针
if(EmptyStack())returnFALSE;
*pRet=pStack->
stkData[--pStack->
iTop];
3、(4分)请说出C++的几大特征:
_______________封装,继承,多态_____________________
4、(6分)请简述以下两个For循环的优点和缺点:
1.for(i=0;
i<
N;
i++)
if(condition){
DoSomthing();
}else{
DoOtherThing();
2.if(condition){
for(i=0;
i++){
DoSomething();
for(i=0;
DoOtherThing();
分析:
第一个循环代码简单,但是效率比较低,因为每次循环都要判断Conditoin,第二个循环代码略显繁琐,但是每次循环不需要判断,效率高。
____________________________________
5、(6分)const在定义类和他的成员函数时有什么用途?
请说明至少两种:
答:
1.修饰参数,参数不能被修改
2.修饰返回值,返回值不能被修改
3.修饰整个函数,在这个函数中不能修改自己的任何成员变量
三、找错题(共20分)
1、改错。
以下程序要打印字符串”0123456789”,请找出其中的错误(可能不止一个)。
(找错扣分)
#include<
stdio.h>
malloc.h>
#defineBUF_SIZE10
voidSub()
charstrBuffer[BUF_SIZE],*pBuffer;
inti;
pBuffer=(char*)malloc(BUF_SIZE*sizeof(char));
pBuffer=strBuffer;
i<
BUF_SIZE;
i++){
*pBuffer++=i;
}
printf(“%s\n”,strBuffer);
free(pBuffer);
1,pBuffer=strBuffer;
申请的内存丢失,出现内存泄漏;
2,*pBuffer++=i;
赋值的数据数字,不是ASCII码;
3,strBuffer[BUF_SIZE],字符数组定义长度不够,应该为strBuffer[BUF_SIZE+1];
4,printf(“%s\n”,strBuffer);
打印字符串没有结束符号;
5,free(pBuffer);
这块从栈里分配的内存,用Free是释放不掉的;
2、找出程序错误(有多个)(重载拷贝构造中的内存泄漏):
(10)
classA
public:
A(intiValue)
m_iValue=iValue;
A(intiValue,char*pcName=NULL)
m_iValue=iValue;
m_pcName=pcName;
}
~A()
if(m_pcName){
deletem_pcName;
A&
operator=(A&
right)
m_iValue=right.value;
m_pcName=newchar[strlen(right.m_pcName)];
strcpy(m_pcName,right.m_pcName);
char*m_pcName;
intm_iValue;
voidmain()
A*pAList=newA[100];
AOrig(1,“hello”);
For(intI=0;
I<
100;
I++){
pAList[i]=Orig;
deletepAList;
1.A没有默认的构造函数
2.两个带参数的构造函数,因为第二个构造函数有默认值,可能会混淆
3.A(intiValue,char*pcName=NULL)这个函数中,应该为m_pcName重新分配空间,而不是直接赋值。
4.第一个构造函数A(intiValue)中没有为m_pcName赋空值,在析构的时候可能会死机。
5.Operator=参数应该是const的。
6.Operator=没有返回自己的引用
7.Operator=没有判断是否和自己是同一个对象
8.Operator=中为m_pcName分配空间应该是strlen(pcName)+1的大小。
9.DeletepAList应该是delete[]pAList;
四、编程题(共30分,每题15分)
1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将表A和表B归并成一个按元素值非递减有序(允许值相同)排列的线性表C,并要求利用原表(即表A和表B)的结点空间存放表C。
2.编写String类的构造,析构和赋值函数
已知String类的原型为
classString
String();
String(constchar*str=NULL);
String(constString&
orig);
~String();
String&
operator=(constString&
right);
Constchar*GetData();
Private:
char*m_pcData;
请完成这个类。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 培训 考核 试题答案 内部 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)