全近几年科大讯飞软件笔试题目_第1页
全近几年科大讯飞软件笔试题目_第2页
全近几年科大讯飞软件笔试题目_第3页
全近几年科大讯飞软件笔试题目_第4页
全近几年科大讯飞软件笔试题目_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.2009讯飞软件开发笔试题目〔C++〕A卷1、〔4分〕用变量a给出下面的定义a)一个整型数;b〕一个指向整型数的指针;c〕一个指向指针的指针,它指向的指针是指向一个整型数;d〕一个有10个整型的数组;e〕一个有10个指针的数组,该指针是指向一个整型数;f〕一个指向有10个整型数数组的指针;g〕一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h〕一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数答案:a)intab)int*a;c)int**a;d)inta[10];e)int*a[10];f)inta[10],*p=a;g)int(*a)(int)h)int(*a[10])(int)2、〔4分〕请写出以下语句的输出结果:Inti=43;Intj=5;Doublef=25.45181;printf("i=%d,j=%d,f=%3.2f〞,i,j,f);printf("i=%*,j=%06d,i/j=%d〞,i,j,i/j);答案:A〕i=43,j=5,f=25.45B〕i=2b,j=00005,i/j=8(%*显示的是一个无符号的0*16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a〕用预处理指令#define声明一个常数,用以说明1年中有多少个秒〔忽略闰年问题〕b〕写一个"标准〞宏MIN,这个宏输入两个参数并返回较小的一个答案:a〕#defineseconds365*24*60*60b)#defineMIN(a,b)((a)<(b)"(a):(b))扩展:MA*宏#defineMA*((a)>(b)(a):(b))ABS宏#defineABS(((*)>0)"(*):(-(*)))4、〔6分〕以下为32为windows下的c++程序,请计算:a〕charstr[]=〞hello〞;char*p=str;请计算:sizeof(str)=sizeof(p)=strlen(p)=答案:6,4,5b)voidfunc(charstr[100]){Void*p=malloc(100);}请计算:sizeof(str)=101sizeof(p)=4inta[3]={1,2,3};intb=sizeof(a)/sizeof(a[0]);请计算:b=35、〔2分〕设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是〔d〕a〕p=1;b)*q=2;c)q=p;d)*p=5;6、〔2分〕const关键字的用途?〔至少说明两种〕答案:〔1〕可以定义const常量〔2〕const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的强健性。7、〔2分〕typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:#definedpsstructs*Typedefstructs*tps;以上两种情况的意图都是要定义dps和tps作为一个指向构造s指针。哪种方法更好一些呢?〔如果有的话〕为什么?Typedef更好一些,因为define只是简单的替换,比方声明dpsa,b等价于struct*a,b;所以这样声明是错误的,而Typedef却不会这样。8、〔8分〕以下是一组有关内存知识的问题,请仔细看题,答复:VoidGetMemory(char*p){P=(char*)malloc(100);}VoidTest(void){Char*str=Null;GetMemory(str);Strcpy(str,〞helloworld〞);Printf(str);}请问运行Test函数会有什么样的结果?a)_会出错,不能传递动态分配的内存,str一直为空char*GetMemory(void){Charp[]=〞helloworld〞);Returnp;}VoidTest(void){Char*str=NULL;Str=GetMemory();Printf(str);}请问运行Test函数会有什么结果?b〕_会产生错误,不能返回子函数的局部变量值,因为在函数退出时,局部变量的值也清空。voidGetMemory2(char**p,intnum){*p=(char*)malloc(num);}VoidTest(void){Char*str=NULL;GetMemory(&str,100);Strcpy(str,〞hello〞);Printf(str);}请问运行Test函数会有什么结果?c)_hello。voidTest(void){Char*str=(char*)malloc(100);Strcpy(str,〞hello〞);Free(str);If(str!=NULL){Strcpy(str,〞world〞);Printf(str);}}请问运行test函数会有什么样的结果?虽然能拷贝成功,但是这样使用很不平安,free(str)后,str成为悬浮指针。9、〔6分〕请写出以下程序的输出结果:ClassA{Public:A(){Printf("Aconstructed.\n〞);}Virtual~A(){printf("Adeconstructed.\n〞);}VirtualvoidFn(){printf("Afncalled.\n〞);}};ClassB:publicA{Public: B() {printf("Bconstructed.\n〞);}Virtual~B() {printf("Bdeconstructed.\n〞);}VirtualvoidFn(){printf("Bfncalled.\n〞);}};ClassC:publicB{Public: C() {printf("Cconstructed.\n〞);}Virtual~C() {printf("Cdeconstructed.\n〞);}VirtualvoidFn() {printf("Cfncalled.\n〞);}};Voidmain(intargc,char*grgv[]){ A*pA=newB;If(pA!=NULL) pA->fn(); B*pB=static_cast<B*>(pA);If(pB!=NULL) pB->fn();C*pC=static_cast<C*>(pA);If(pC!=NULL) pC->fn();deletepA;}Aconstructed.BconstructedBfncalled.Bfncalled.Bfncalled.Bdeconstructed.Adeconstructed.10.(2分)以下说法错误的选项是:〔b〕A〕指针和引用作为函数参数都可以改变实参B〕指针和引用都可以在定义后任意的改变指向C〕引用必须在创立的时候初始化,而指针则不需要D〕不能空引用,但是可以有空指针11、〔2分〕以下关于多态的描述,错误的选项是〔c〕A〕C++语言的多态性分为编译时的多态和运行时的多态性B〕编译时的多态性可以通过函数重载来实现C〕运行时的多态性可以通过模板和虚函数来实现D〕实现运行时多态性的机制称动态绑定12、〔2分〕运算符的重载形式有两种,重载为_类的成员函数_和_类的友元函数_13、〔2分〕main主函数执行完毕后,是否可能会再执行一段代码?请说明理由?答:可以,可以用_one*it()注册一个函数,在main完毕之后调用f1,f2,f3,f4。14、〔2分〕C++中的空类,默认产生那些类成员函数?答:默认构造函数、析构函数、默认拷贝函数和赋值操作符15、〔4分〕简述STL库的功能,并给出遍历一个包含一组整型数的vector的代码。答:标准模板库是一个基于模板的容器类库,包括链表、列表、队列和堆栈。标准模板库还包含许多常用的算法,包括排序和查找。标准模板库的目的是提供对常用需求重新开发的一种替代方法。标准模板库已经经过测试和调试,具有很高的性能并且是免费的。最重要的是,标准模板库是可重用的,当你知道如何使用一个标准模板库的容器后,就可以在所有的程序中使用它而不需要重新开发了。容器是包容其他对象的对象。标准C++库提供了一系列的容器类,它们都是强有力的工具,可以帮助C++开发人员处理一些常见的编程任务。标准模板库容器类有两种类型,分别为顺序和关联。顺序容器可以提供对其成员的顺序访问和随机访问,关联容器则经过优化类的键值访问它们的元素。标准模板库在不同操作系统是可移植的。#include<iostream>#include<vector>usingnamespacestd;intsum(vector<int>vec){ intresult=0; vector<int>::iteratorp=vec.begin(); while(p!=vec.end()) { cout<<*p<<""; result+=*p++; } returnresult;}intmain(){ vector<int>v1(100); cout<<v1.size()<<endl;//100 cout<<sum(v1)<<endl;//0 v1.push_back(23); cout<<v1.size()<<endl;//101 cout<<sum(v1)<<endl;//23 v1.reserve(1000); v1[900]=900; cout<<v1[900]<<endl; cout<<v1.front()<<endl; cout<<v1.back()<<endl; v1.pop_back(); cout<<v1.back()<<endl; return0;}16、〔5分〕请写出贝叶斯公式假设A1,A2,…,An构成完备事件组,且P(Ai)>0,(i=1,2,…,n) ,则对任一事件B(P(B)>0)有:17、〔5分〕进程和线程的区别和联系?进程和线程的关系:

〔1〕一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

〔2〕资源分配给进程,同一进程的所有线程共享该进程的所有资源。

〔3〕处理机分给线程,即真正在处理机上运行的是线程。

〔4〕线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的方法实现同步。

线程是指进程内的一个执行单元,也是进程内的可调度实体.

与进程的区别:

(1)调度:线程作为调度和分配的根本单位,进程作为拥有资源的根本单位

(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

(4)系统开销:在创立或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创立或撤消线程时的开销。但是进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序强健,但在进程切换时,消耗资源较大,效率要差一些

18、〔10分〕请不用任何cruntime函数实现以下函数:Intertrim_str(char*pstr)函数功能如下:滤掉字符串头尾的空格、回车、tab输出字符串通过输入字符串指针返回如果成功则返回0否则返回非0#include<iostream>usingnamespacestd;#defineERR-1;inttrim_str(char*pstr){ char*p=pstr; char*m; if(p==NULL) { returnERR; } while(*p!='\0') { if((*p=='')|(*p=='\n')|(*p=='\t')) { m=p; while(*m!='\0') { *m=*(m+1); m++; } } else { p++; } } return0;}intmain(){chars[]="abde edeasd ";inti=trim_str(s); if(i==0) { cout<<"成功"<<endl; } else { cout<<"失败"<<endl; } cout<<s<<endl; return0;}19、〔10分〕有N个大小不等的自然数〔1,2,3,…..N〕请将它们从小到大排列。算法要求:时间复杂度为O〔n〕,空间复杂度为O〔1〕。请简要说明你采用的排序算法并写出c的伪代码。#include<iostream>usingnamespacestd;constintMA*=1000;intdata[MA*];voidpai*u(int*p,intm){ intk=0; for(inti=0;i<MA*;i++) { data[i]=0; } for(intj=0;j<m;j++) { data[*(p+j)]++; } for(i=0;i<MA*;i++) { if(data[i]!=0) { for(j=0;j<data[i];j++) { *(p+k)=i; k++; } } }}intmain(){ inta[]={1,3,1,27,13,2,4,80,43,23,18,46}; intlen; len=sizeof(a)/sizeof(int); pai*u(a,len); for(inti=0;i<len;i++) { cout<<a[i]<<""; } return0;}20、〔10分〕用文字和图示〔类图〕描述你所知道的除单件模式和简单工厂之外的一种设计模式,并用c++实现单例模式:类图:SingletonSingleton<<static>>singleton:Singleton*<<static>>GetInstance()Singleton()classSingleton{public: staticSingleton*GetInstance();private: Singleton(){} ~Singleton(){} staticSingleton*singleton;}Singleton*Singleton::singleton=NULL;Singleton*Singleton::GetInstance(){ if(singleton==NULL) singleton=newSingleton(); returnsingleton;}21、〔10分〕请在以下三题中任选一题作答A〕什么是内存的垃圾回收集算法,其作用是什么?据你所知,有那些开发语言中提供了垃圾收集机制?答:一种自动内存管理的策略,就是自动垃圾回收机制。既然是自动垃圾回收,则平台肯定得采取一种方式发现垃圾,然后去除。这就是垃圾收集算法所关注的问题。垃圾收集算法的任务就是将活动的对象和已经死掉的对象分别出来,然后将死掉的对象的内存回收,而且为了更好的利用内存,有的算法还会对内存碎片进展压缩。

JAVA,C#B〕现在非常多的用户都在谈SOA,根据Gartner的预测,2008年,企业80%应用都将通过使用SOA来实现,你理解SOA是什么?SOA的关键特点有哪些?SOA带来什么?答:面向效劳的体系构造

面向效劳的体系构造〔Service-OrientedArchitecture,SOA〕是一个组件模型,它将应用程序的不同功能单元〔称为效劳〕通过这些效劳之间定义良好的接口和契约联系起来。接口是采用中立的方式进展定义的,它应该独立于实现效劳的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的效劳可以一种统一和通用的方式进展交互。C〕随着互联网的普及,很多新兴的、传统的软件厂商都在探讨SAAS的前景,甚至很多行业观点认为SAAS是软件行业的未来趋势。你是怎么理解SAAS的,你怎么对待这种趋势"SAAs和更早之前的ASP感念有什么异同?答:SaaS〔Software-as-a-service〕的意思是软件即效劳,SaaS的中文名称为软营或软件运营。SaaS是基于互联网提供软件效劳的软件应用模式。作为一种在21世纪开场兴起的创新的软件应用模式,SaaS是软件科技开展的最新趋势

SaaS提供商为企业搭建信息化所需要的所有网络根底设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列效劳,企业无需购置软硬件、建立机房、招聘IT人员,即可通过互联网使用信息系统。就像翻开自来水龙头就能用水一样,企业根据实际需要,从SaaS提供商租赁软件效劳。

13、指针和引用的一样点和不同点:

*一样点:

●都是地址的概念;

指针指向一块内存,它的内容是所指内存的地址;而引用则是*块内存的别名。

*不同点:

●指针是一个实体,而引用仅是个别名;

●引用只能在定义时被初始化一次,之后不可变;指针可变;引用"从一而终〞,指针可以"见异思迁〞;

●引用没有const,指针有const,const的指针不可变;

●引用不能为空,指针可以为空;

●"sizeof引用〞得到的是所指向的变量(对象)的大小,而"sizeof指针〞得到的是指针本身的大小;

●指针和引用的自增(++)运算意义不一样;

●引用是类型平安的,而指针不是(引用比指针多了类型检查14、多线程问题为什么多线程会比单线程更耗时呢?其原因就在于,线程启停以及线程上下文切换都会引起额外的开销,所以消耗的时间比单线程多。为什么加锁后的三线程比两线程还慢呢?其原因也很简单,那把读写锁就是罪魁祸首。实际情况并不是并行执行,反而成了串行执行,

在采用多线程方法设计程序时,如果产生的额外开销大于线程的工作任务,就没有并行的必要。线程并不是越多越好,软件线程的数量尽量能与硬件线程的数量相匹配。最好根据实际的需要,通过不断的调优,来确定线程数量的最正确值。

15、什么是虚拟存储器?虚拟存储器的特点是什么?

虚拟存储器:在具有层次构造存储器的计算机系统中,自动实现局部装入和局部替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的"主存储器〞。

虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址构造和可用磁盘容量。

特点:屡次性、对换性、虚拟性。

屡次性是指一个作业被分成屡次调入内存运行,亦即在作业运行时没有必要将其全部装入,只需将当前要运行的那局部程序和数据装入内存即可;以后每当要运行到尚未调入的那局部程序时,再将它调入。

对换性是指允许在作业的运行过程中进展换进、换出,亦即,在进程运行期间,允许将那些暂不使用的程序和数据,从内存调至外村的对换区〔换出〕,待以后需要时再将它们从外存调至内存〔换进〕。

虚拟性是指能够从逻辑上扩大内存容量,使用户所看到的内存容量远大于实际内存容量。16、什么是this指针?其主要功能是什么?

this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。

全局仅有一个this指针,当一个对象被创立时,this指针就指向对象数据的首地址。

一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用

return*this;

另外一种情况是当参数与成员变量名一样时使用this指针,如this->n=n〔不能写成n=n〕17、C++常见的内存错误:

1.内存泄露:指应用程序未释放动态申请的且不再使用的内存,原因可能是程序员疏忽或者错误造成程序异常。在C/C++中,动态申请的内存是在堆上的。如果发送此类的内存泄露,函数每执行一次就丧失一块内存。长时间运行改程序可能引起系统"内存耗尽"。

2.野指针:未初始化的指针称为野指针。通常的防止方法就是在指针定义的时候就初始化,初始为NULL或者一个有意义的内存地址。对于动态申请的内存地址,在该内存释放之后,对应指针最好立即赋值为NULL。并在具体使用指针的时候判断指针的值是否为NULL。

3.内存越界访问:内存越界访问通常发生在数组、字符串或者连续内存的访问。有两种情况:读越界,即读了非有效的数据。如果所读的内存地址是无效的,程序会立即崩溃。如果所读内存地址是有效的,读入的时候不会有错误,但是读入的数据是随机的,可能会产生不可控制的后果。举个简单的例子,字符串输出,如果没有完毕符,会输出一堆乱码也可能输出正常,也就是说结果是不可控的。写越界,亦称为缓冲区溢出,通常写越界会发生错误。内存写越界造成的后果是非常严重的。例如访问数组越界可能会修改访问数组的循环变量,造成死循环。

4.返回指向临时变量的指针char*getString(){charb[]="Hello,Tocy!";returnb;}

5.试图修改常量

6.内存未分配成功,但已经使用

7.内存分配成功,但没有初始化附加:goto语句有没有必要存在程序设计语言中答案:构造程序设计是防止使用GOTO语句的一种程序设计;构造程序设计是自顶向下的程序设计;构造程序设计是一种组织和编制程序的方法,利用它编制的程序易于理解、易于修改;程序构造化的一个主要功能是使程序正确性的证明容易实现;构造程序设计对设计过程中的每一步去验证其正确性,这样便自动导致自我说明和自我保卫的程序设计风格;2012年科大讯飞软件笔试题一、单项选择题1、64变形的外角和是多少〔A〕是360度A、1*360 B、1*180 C、64*360 D、64*1802、有一盆衣服〔已经洗过了,需要漂洗〕,请问在漂洗次数固定的情况下如何分配水才能把衣服洗得最干净〔C〕 A、从少到多 B、从多到少 C、平均分配,是求函数极值问题 D、随便洗3、用力拉一根橡皮筋,橡皮筋上有没有点还处在原来的位置没有被拉走〔B〕A、有 B、没有 C、有是有、有时没有 D、一般人拉没有,*谦拉就有4、假设一个应用程序需要使用多个提供不同功能但在皆接口上有差异的类,适合使用的设计模式是〔D(确定)〕 A、装饰模式 B、迭代器模式 C、工厂模式 D、适配器模式5、构造化程序设计主要强调的是〔C〕 A、程序的规模 B、程序的效率C、程序的易读性 D、程序设计语言的先进性6、SQLServer中,删除一个表的命令是〔C〕 A、DELETE B、CLEAR C、DROP D、REMOVVE7、以下关于互斥量说法错误的选项是:〔B〕 A、单线程程序不需要使用互斥量B、互斥量可以被两个以上的线程锁定 C、互斥量的激活是原子操作 D、互斥量的创立和销毁可以在不同的线程进展8、在Windows任务管理器中发现*个进程CPU占用率长时间处于100%,以下可能导致该现象的原因是〔D〕 A、程序处于大量I/O过程中 B、多线程导致进程死锁 C、等带另一个程序响应 D、程序进入死循环9、假设进程中一个生产者线程,10个消费者线程,为保证进程间不出现死锁,信号量的初值可以设置为〔C〕 A、-1 B、0C、1 D、1010、使用两个栈共享一片空间时,当〔D〕时,才产生溢出 A、其中一个栈的栈底到达这片内存空间的中心点 B、其中一个栈的栈顶到达这片内存空间的中心点 C、两个栈均不空,且一个栈的栈顶到达另一个栈的栈底〔不可能发生这种情况〕 D、两个栈的栈顶在这片内存空间的*一位置相遇11、在一个单链表HL中,假设要在指针所指节点的后面插入一个有指针second所指向的节点,则执行〔A〕A、second->ne*t=first->ne*t;first->ne*t=second; B、first->ne*t=second->ne*t;second=first; C、second->ne*t=first->ne*t;second->ne*t=first; D、first->ne*t=second->ne*t;second->ne*t=first;12、以下C语言编译过程的真确步骤是〔B〕 A、预处理编译汇编连接 B、预处理编译优化〔不能少了优化〕汇编连接 C、编译优化汇编运行 D、编辑预处理编译汇编优化运行13、在C语言程序编译时出现如下错误:"errorLNK2019:unresovede*ternalsymbol"int__cdecltest〔int〕"("testYAHHZ) referenced〞可能的原因是〔D〕 A、函数未定义 B、变量未声明 C、变量未定义 D、函数未声明14、以下关于C语言中的函数表达错误的选项是〔B〕 A、一个函数中可以有多条return语句B、调用函数必须要在一条独立的语句中完成 C、函数可以通过return语句传递函数值 D、主函数main可以带有参数15、在C语言中,翻开可读写的二进制文件myfile并向该文件追加写入内容,如果myfile不存在则创立新文件,正确的调用方式为〔〕 A、fopen〔"myfile","w"〕 B、fopen〔"myfile","wb"〕 C、fopen〔"myfile","r+b"〕 D、fopen〔"myfile","a+b"〕a表示追加文件内容。16、在C语言中,一个shortint型数据在内存中占2字节,则shortint型数据的取值*围〔B〕 A、-256~255 B、-32768~32767 C、-65536~65535 D、-214748364817、下面是对数组s的初始化,其中不正确的选项是〔D〕 A、chars[6]={"abcd"}; B、chars[6]={'a','b','c','d'} C、chars[6]="" ; D、chars[6]="abcdef"18、有以下一段程序代码: voidGetMemory〔char**p,intnum〕 { *p=〔char*〕malloc〔num〕; } voidTest〔void〕 { char*str=NULL; GetMemory〔&str,100〕; strcpy〔str,"hello"〕; printf(str); } 请问运行Test函数会有什么样的结果〔A〕 A、hello B、无效指针,输出不确定 C、NUll D、程序崩溃19、在32位系统中,有一类: classA { public: virtualinttest(); virtualdoubletest2(); inttest3(); protected: doubletest4(); private: inta,b,c;定义了三个变量,加上一个虚函数表指针。大小为16 }; 请问sizeof〔A〕=〔B〕 A、12 B、16C、28 D、3220、有以下一段程序代码: classA { public: virtualvoidfunc1(){printf("A'sfuncl");} voidfunc2(){("A'sfunc2")}; } classB:publicA { public: virtualvoidfunc1(){printf("B'sfuncl");} voidfunc2(){("B'sfunc2")}; } voidmain() { Binst_b;B*ptr_a=&b; ptr_a->func1(); ptr_a->func2(); } 程序的输出结果为:〔C〕 A、A'sfunclB'sfunc2 B、B'sfunclA'sfunc2C、B'sfunclB'sfunc2 D、A'sfunclA'sfunc2二、填空题1、操作系统中的存储管理常用__虚拟存储器__的方式来摆脱主存容量的限制。2、满二叉树第i层上的叶子节点数有_2^〔i-1〕___个。3、二分查找算法平均时间复杂程度是___o〔log〔n〕〕_____。4、设*=3,y=2,*<<y=___12___。5、非成员函数声明为类的__友元函数_____才能访问这个类的private成员。6、带有____纯虚函数____的类称为抽象类,它只能作为基类来使用。三、简答题〔每题6分,共18分〕1、列举你所知道的排序算法和它们的平均复杂程度。 答:1、冒泡排序〔bubblesort〕—O(n^2) 2、鸡尾酒排序(Cocktailsort,双向的冒泡排序)—O(n^2) 3、插入排序〔insertionsort〕—O(n^2) 4、选择排序〔selectionsort〕—O(n^2) 5、堆排序〔heapsort〕—O(nlogn) 6、快速排序〔quicksort〕—O(nlogn)2、列举析构函数与普通类成员函数的不同点。 答:1、析构函数名也应与类名一样,只是在函数名前面加一个波浪符~,例如~stud() 2、它不能带任何参数,也没有返回值〔包括void类型〕。3、只能有一个析构函数,不能重载4、析构函数在对象生存期即将完毕的时刻被自动调用3、在C++语言中使用宏定义经常会引起一些错误〔如少打括号引起表达式值与预期不符等〕,列举一些可以代替宏定义的方法。Method1:内联函数,Method2:const方法Method3:typedef方法。四、编程题〔共三题20分〕斐波那契数列的形式如下:1,1,2,3,5,8,13……,n,编写一个函数计算数列中第n个元素的值。〔5分〕2、不调用任何系统函数,实现一个字符串查找子串的函数,如果包含字串,则返回该字符串的位置值,如果不包含,则返回-1。〔7分〕分两步,第一步:找到字符串中与子串首字符相等的字符在字符串中的位置。第二步:比拟以后的字符是否相等。如果不等,记录上次找到的第一次相等的位置,从这以后再寻找找到字符串中与子串首字符相等的字符在字符串中的位置。然后再比拟以后的字符是否相等。用算法实现将一个输入的数字颠倒〔输入12345->54321〕,要求不调用任何系统函数,也不能将输入的数字转换为字符串作为中间过渡。〔8分〕2013年科大讯飞软件类笔试题1、一样外表积的正三棱锥、四面体、六面体、正十二面体以及正二十面体,其中体积最大的是?正二十面体,物体越接近于球,体积越大2、上山和下山的路程都是1km,上山时速度15km/h,下山速度为多少才能到达时速30km/h〔D〕

A

45km/h

B

大于45km/h

C

接近光速

D永远不可能设下坡速度*,则:1/*+1/15=2/30==>1/*=03、三个骰子,出现两个点数一样的概率〔5/12〕4、但凡包含纯虚函数的类都是抽象类吗?对的5、数据库oderby

和having知识点的。6、对应"一个接口不同行为〞的设计模式是。填空题1、对于无序整型数字的排序用什么算法最正确。快速排序2、一串数字16个,用折半查找查找一个存在的数字最多查多少次。3、构造函数、重载运算符函数、-------不能定义为虚函数。静态成员函数4、STL由**、迭代器、算法组成。我答容器5、生产模式和消费者模式都要用到的数据构造是什么?简答题:1、线程和进程用到的技术2、析构函数和普通成员函数的区别3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论