科大讯飞笔试题目C

上传人:wuy****ng 文档编号:160400285 上传时间:2022-10-10 格式:DOC 页数:9 大小:32.01KB
收藏 版权申诉 举报 下载
科大讯飞笔试题目C_第1页
第1页 / 共9页
科大讯飞笔试题目C_第2页
第2页 / 共9页
科大讯飞笔试题目C_第3页
第3页 / 共9页
资源描述:

《科大讯飞笔试题目C》由会员分享,可在线阅读,更多相关《科大讯飞笔试题目C(9页珍藏版)》请在装配图网上搜索。

1、2009讯飞软件开发笔试题目(C+)A卷答案请写在答题纸上第一部分 综合基础试题 共50分1、(4分)用变量a给出下面的定义a) 一个整型数;b)一个指向整型数的指针;c)一个指向指针的指针,它指向的指针是指向一个整型数;d)一个有10个整型的数组;e)一个有10个指针的数组,该指针是指向一个整型数;f)一个指向有10个整型数数组的指针;g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数答案:a)int ab)int *a;c)int *a;d)int a10;e)int *a 10;f) int

2、a10, *p=a;g)int (*a)(int)h) int( *a10)(int) 2、(4分)请写出以下语句的输出结果:Int i=43;Int j=5;Double f=25.45181;a) printf(“i=%d,j=%d,f=%3.2f”,i,j,f);b) printf(“i=%x,j=%06d,i/j=%d”,i,j,i/j);答案:A)i=43,j=5,f=25.45(说明:本来应该输出最小位有效数字,.,但是由于限定了位小数,所以强制有位小数,有效数字的个数就起不到强制作用了。如果是%3.1,则输出为25.5)B)i=2b ,j=00005,i/j=8 (%x显示的是一

3、个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a)用预处理指令#define 声明一个常数,用以表明1年中有多少个秒(忽略闰年问题)b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个答案:a)#define seconds 365*24*60*60b) #define MIN(a,b) (a)(b)(a):(b) ABS宏 #define ABS (x)0)?(x):(-(x)4、(6分)以下为32为windows下的c+程序,请计算:a)char str=”hello”;char *

4、p=str;请计算:sizeof(str)=sizeof(p)=strlen(p)=答案:6,字符串数组以0(空格为结尾,所以str数组空间大小为5+1)4,5,strlen函数区的字符指针str的长度,不包括空字符。b)void func(char str100)Void *p=malloc(100);请计算:sizeof(str)=4sizeof (p)=4c)int a3=1,2,3;int b=sizeof(a)/sizeof(a0);请计算:b=35、(2分) 设有定义:int n=0,*p=&n,*q=&p; 则以下选项中,正确的赋值语句是(d)a)p=1; b)*q=2; c)q

5、=p; d)*p=5;6、(2分)const关键字的用途?(至少说明两种)答案:(1) 避免变量的值被修改(2) 修饰指针 int*const p(地址不可以被修改)int const*p(值不可以被修改)(3) 修饰函数形参 表示该参数只是用来传入值(4) Canst修饰的成员变量 不可以被成员函数更改、(5) 对于类的成员函数有时候必须返回const修饰的类型 避免函数返回值为左值7、(2分)typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:#define dps struct s*Typedef struct s *tps;以上两种

6、情况的意图都是要定义dps和tps作为一个指向结构s指针。哪种方法更好一些呢?(如果有的话)为什么?1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入。2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifie

7、r inside a function definition。8、(8分) 以下是一组有关内存知识的问题,请仔细看题,回答:Void GetMemory(char *p)P=(char *)malloc(100);Void Test(void)Char *str=Null;GetMemory(str);Strcpy(str,”hello world”);Printf(str);请问运行Test函数会有什么样的结果?a)_在函数中申请内存 函数调用完毕内存直接释放 str值仍为NULL_char *GetMemory(void)Char p=”hello world”);Return p;Voi

8、d Test(void)Char *str=NULL;Str=GetMemory();Printf(str);请问运行Test函数会有什么结果?b)_void GetMemory2(char *p,int num)*p=(char *)malloc(num);Void Test(void)Char *str=NULL;GetMemory(&str,100);Strcpy(str,”hello”);Printf(str);请问运行Test函数会有什么结果?c)_hello_void Test(void)Char *str=(char *)malloc(100);Strcpy(str,”hello

9、”);Free(str);If(str!=NULL)Strcpy(str,”world”);Printf(str);请问运行test函数会有什么样的结果?world9、(6分)请写出以下程序的输出结果:Class APublic:A() Printf(“A constructed.n”);Virtual A()printf(“A deconstructed.n”);Virtual void Fn()printf(“A fn called.n”);Class B:public APublic:B()printf(“B constructed.n”);Virtual B()printf(“B de

10、constructed.n”);Virtual void Fn()printf(“B fn called.n”);Class C:public BPublic:C()printf(“C constructed.n”);Virtual C()printf(“C deconstructed.n”);Virtual void Fn()printf(“C fn called.n”);Void main(int argc,char* grgv)A *pA=new B;If(pA!=NULL)pA-fn();B *pB=static_cast(pA);If(pB!=NULL)pB-fn();C * pC=

11、static_cast(pA);If(pC!=NULL)pC-fn();delete pA;10.(2分)以下说法错误的是:(b)A)指针和引用作为函数参数都可以改变实参B)指针和引用都可以在定义后任意的改变指向C)引用必须在创建的时候初始化,而指针则不需要D)不能空引用,但是可以有空指针11、?(2分) 下列关于多态的描述,错误的是(c)A)C+语言的多态性分为编译时的多态和运行时的多态性B)编译时的多态性可以通过函数重载来实现C)运行时的多态性可以通过模板和虚函数来实现D)实现运行时多态性的机制称动态绑定12、(2分) 运算符的重载形式有两种,重载为_类的成员函数重载_和_友元函数重载_1

12、3、(2分) main主函数执行完毕后,是否可能会再执行一段代码?请说明理由?一段程序是以main函数开始 main函数执行完毕程序结束 如果想在mian函数退出后执行代码可以使用atexit()函数 注册一个函数14、(2分)C+中的空类,默认产生那些类成员函数?缺省的构造函数缺省的拷贝构造函数缺省的析构函数缺省的赋值运算符缺省的地址运算符缺省的地址运算符const第二部分 概念简答 (共10分)15、(4分)简述STL库的功能,并给出遍历一个包含一组整型数的vector的代码。16、(5分)请写出贝叶斯公式P(A|B)=P(B|A)*P(A)/P(B)17、 (5分)进程和线程的区别和联系

13、?1)进程:子进程是父进程的复制品。子进程获得父进程时间空间, 堆和栈的复制品 2)线程:相对进程而言,线程是程序执行的基本单位,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 速度: 线程产生的速度快,线程间的通信快.切换快,因为他们 都在同一个地址空间 资源利用率:线程的资源利用率比较好也是他们在同一个地址空间 同步问题:线程使用公共变量或内存是需要使用同步机制,还是因为 他们在同一地址空间。 二者都可以提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护。 同时,线程适合在SMP机器上运行,而进程则

14、可以跨机器迁移(SMP)(共享内存多处理器)2 .用两个栈实现一个队列的功能?要求给出算法和思路堆栈的特征:FILO 先进后出队列的特征:FIFO 先进先出所以,用两个栈s1和s2模拟一个队列时,s1作输入栈,逐个元素压栈,以此模拟队列元素的入队。当需要出队时,将栈s1退栈并逐个压入栈s2中,s1中最先入栈的元素,在s2中处于栈顶。s2退栈,相当于队列的出队,实现了先进先出。显然,只有栈s2为空且s1也为空,才算是队列空。算法中假定栈s1和栈s2容量相同。出队从栈s2出,当s2为空时,若s1不空,则将s1倒入s2再出第三部分 算法设计与设计思考 共30分18、(10分) 请不用任何c runt

15、ime函数实现以下函数:Inter trim_str(char *pstr)函数功能如下:1) 滤掉字符串头尾的空格、回车、tab2) 输出字符串通过输入字符串指针返回3) 如果成功则返回0否则返回非019、 (10分)有N个大小不等的自然数(1,2,3,.N)请将它们从小到大排列。算法要求:时间复杂度为O(n),空间复杂度为O(1)。请简要说明你采用的排序算法并写出c的伪代码。快速排序20、(10分) 用文字和图示(类图)描述你所知道的除单件模式和简单工厂之外的一种设计模式,并用c+实现第四部分 知识面考察 共10分21、(10分)请在下列三题中任选一题作答A)什么是内存的垃圾回收集算法,其

16、作用是什么?据你所知,有那些开发语言中提供了垃圾收集机制?虚拟机自动回收你曾经声明过,但不使用了的那些变量。C# JAVAB)现在非常多的用户都在谈SOA,根据Gartner的预测,2008年,企业80%应用都将通过使用SOA来实现,你理解SOA是什么?SOA的关键特点有哪些?SOA带来什么?面向服务的体系结构SOA服务具有平台独立的自我描述XML文档。SOA 服务用消息进行通信,该消息通常使用XML Schema来定义在一个企业内部,SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。C)随着互联网的普及,很多新兴的、传统的软件厂商

17、都在探讨SAAS的前景,甚至很多行业观点认为SAAS是软件行业的未来趋势。你是怎么理解SAAS的,你怎么看待这种趋势?SAAs和更早之前的ASP感念有什么异同?用户用软件不再需要一次性花费大量资金购买软件,只需要按需要支付租金就可以了,如果不想续用,可以随时停租附加:goto语句有没有必要存在程序设计语言中答案:结构程序设计是避免使用GOTO语句的一种程序设计; 结构程序设计是自顶向下的程序设计; 结构程序设计是一种组织和编制程序的方法,利用它编制的程序易于理解、易于修改; 程序结构化的一个主要功能是使程序正确性的证明容易实现; 结构程序设计对设计过程中的每一步去验证其正确性,这样便自动导致自

18、我说明和自我捍卫的程序设计风格;在60年代末和70年代初,关于GOTO语句的用法的争论比较激烈。主张从高级程序语言中去掉GOTO语句的人认为,GOTO语句是对程序结构影响最大的一种有害的语句,他们的主要理由是:GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。去掉GOTO语句后,可直接从程序结构上反映程序运行的过程。这样,不仅使程序结构清晰,便于理解,便于查错,而且也有利于程序的正确性证明。 持反对意见的人认为,GOTO语句使用起来比较灵活,而且有些情形能提高程序的效率。若完全删去GOTO语句,有些情形反而会使程序过于复杂,增加一些不必要的计算量。1974年,DE克努

19、斯对于GOTO语句争论作了全面公正的评述,其基本观点是:不加限制地使用GOTO语句,特别是使用往回跳的GOTO语句,会使程序结构难于理解,在这种情形,应尽量避免使用GOTO语句。但在另外一些情况下,为了提高程序的效率,同时又不致于破坏程序的良好结构,有控制地使用一些GOTO语句也是必要的。用他的话来说就是:“在有些情形,我主张删掉GOTO语句;在另外一些情形,则主张引进GOTO语句。”从此,使这场长达10年之久的争论得以平息。 后来,G加科皮尼和C波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉GOTO语句并不影响高级程序语言的编程能力,而且

20、编写的程序的结构更加清晰。 结构程序设计的思想体现在采用了一些比较行之有效的方法,在这些方法中较有代表性的是“逐步求精”方法。所谓“逐步求精”方法,就是在编制一个程序时,首先考虑程序的整体结构而暂时忽略一些细节问题,然后逐步地一层一层地细化直至用所选用的语言完全描述每一个细节,即得到所期望的程序为止。换言之,它是按照先全局后局部、先整体后细节、先抽象后具体的过程组织人们的思维活动,使得编写出的程序结构清晰、容易理解、容易验证、容易修改。“逐步求精”方法与模块化设计方法既有联系又有区别。粗略地讲,逐步求精主要指一个程序的设计过程,而模块化设计主要指比较大的系统的设计过程。 此外,面对“软件危机”,人们调查研究了软件生产的实际情况,逐步感到采用工程化的方法从事软件系统的研究和维护的必要性,于是与程序设计方法学密切相关的软件工程在1968年应运而生。软件工程的主要对象是大型软件。软件工程研究的内容主要包括:软件质量保证和质量评价;软件研制和维护的方法、工具、文档;用户界面的设计以及软件管理等。软件工程的最终目的是摆脱手工生产软件的状况,逐步实现软件研制和维护的自动化。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!