西北大学计算机选修课C++考试试题_第1页
西北大学计算机选修课C++考试试题_第2页
西北大学计算机选修课C++考试试题_第3页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PAGEPAGE9期中考试试卷专业:公共管理学院档案学学号:2006104198姓名:林强一、面向对象理解(一).面向对象的概念解析面向对象:向对象的理念使计算机软件系统能与现实世界中的系统一一对应。类(s:类是具有相似内部状态和运动规律的实体的集合(或统称、抽象。类的概念来自于人"这就是"分类";如动物->猫科动物->猫->大花猫等。对于一个具体的类,它有许多具体的个"对象。类的内部状态是指类集合中对象的共同状态;类的运动"人等一些区别于其它事"这个类的一个个"对象。类的特性:类的定义决定了类具有以下5个特性:抽象、继承、封装、重载、多态。抽象(内部状态和运动规律类组成的。继承:继承是类不同抽象级别之间的关系。类的定义主要有2类可演绎出子类;父类是子类更高级别的抽象。子类可以继承父类的所有内部状态和运动规律。在计算机软件开发中采用继承性,提供了类的规范的等级结构;通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。封装:对象间的相互联系和相互作用过程主要通过消息机制得以实现。对象之间并(覆盖多态性是指同名的方法可在不同的类中具有不同的运动规律。在父重载:重载指类的同名方法在给其传递不同的参数是可以有不同的运动规律。在对410斤大米;如老板指明采购员今天晚上到福州东街口买5斤大米,那采购员将不得不按5斤大米。对象(t:23、流氓陈水扁、苹果、飞机、规则、法律、法规、表单等等。每个对象皆有自己的类与对象的区别180,体重79公斤,大学本岁,汉族。人类只有一个,人类的实例可以有数个。对象可以被创建和销毁,但类是无所不在的。例如,桌子是一个类,人们不断打造各种尺寸和风格(属性)的桌子(桌子的实例,它是一个抽象的概念。应该称它为桌子类,以区别于打造的具体桌子。(二).面向对象程序设计的两个原则:抽象和分类抽象与具体相对应。一个人名是抽象,它代表某人的一切属性,包括身高,体重,文抽象与具体相对应。一个人名是抽象,它代表某人的一切属性,包括身高,体重,文层层分类,是概念逐渐细化,即具体化。相反,归类的结果,便是逐步抽象的过程。在面向对象的计算机世界中,我们把一辆实实在在的桑塔纳小轿车称为是类桑塔纳的解抽象的重要手段,两者都是面向对象程序设计的重要概念。(三).如何应用面向对象思想解决问题利用面向对象方法解决问题最重要的就是把这个问题框架化,用抽象、分类的手段实现框架化。面对一个问题先用分类的思想,把问题(事件)分成“类”,这些类描述了一组有相同特性(属性)和相同行为(方法)的对象,在程序中所对应的就是创建解决问题所必需的数据类型,再按需要把类实例化,形成一个个对象,各个抽象对象之间是彼此独立的,可以独立进化(态,所需解决问题的层次之间,结构之间各有统一的通讯方式(通常是消息,事件机制。(四).面向对象方法的优缺点优点A重用性利于开发速度如果你想开发某个功能发现他实现起来很麻烦,这个时候有另一技术能很好的解决时,面向对象的方法的优势就发挥出来了B,封装性/抽象性:结构清晰很标准规范化易于理解可读性更强C.继承性容易扩展,在大框架不变的情况下很容易就开发出适合自己的功能D人性化使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,结果编程就更加富有人性化。缺点B.性能牺牲C++C++(所有对象的属性都经过内置多重指针的间接引用是其性能损失的主要原因之一)。在某些对速度要求极高特殊场合,例如你做的是电信的交换系统,每秒钟有超过百万的人同时进行电话交换,如果,每一个数据交换过程都是一个对象,那么总的性能损失将是天文数字戏设计公司,老板希望做出来的游戏可以更多的兼顾到更多的电脑使用者,游戏每秒钟的运行的帧可以更C++会使你的程序变得笨拙,无法满足你的(五).面向对象方法的启示1.尽可能地按照现实世界建模(我们常常为了遵守系统功能分布原则、避免全能类原则以及集中放置相关数据和行为的原则而违背这条原则)类必须知道它包含什么,但是不能知道谁包含它。所有数据都应该隐藏在所在的类的内部。类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。无关系,要么只使用另一个类的公有接口中的操作。从设计中去除不需要的类。二、C++面试题请写出char*p与零值”比较的if语句标准答案:if(p==NULL)if(p!=NULL)如下写法属不良风格,给考官不好印象。if(p==0)if(p!=0)if(p)if(!)请写出floatx与零值”比较的if语句标准答案分析:constfloatEPSINON=0.00001;if((x>=-EPSINON)&&(x<=EPSINON)此类形式。如下是错误的写法。if(x==0.0)if(x!=0.0)C++/CC++/CC++/C的理解程度,但不能反映考生的智力和软件开发能力。找错题试题1:voidtest1(){charstring[10];char*str1="0123456789";strcpy(string,str1);}试题2:voidtest2(){charstring[10],str1[10];inti;for(i=0;i<10;i++){str1[i]='a';}strcpy(string,str1);}试题3:voidtest3(char*str1){charstring[10];if(strlen(str1)<=10){strcpy(string,str1);}}解答:试题1字符串1需要1个字节才能存放下(,而g只有10个字节的空间,strcpy会导致数组越界;2str13分;如果面试者strcpy(string,str1string内存起所复制的字节数具7trcpy10分;3,if(strlen(str1)<=10)if(strlen(str1)<10)strlen的结1个字节。分析:考查对基本功的掌握:strcpy的工作方式strlen'\0'。找出一下题的错误试题1:voidGetMemory(char*p){p=(char*)malloc(100);}voidTest(void){char*str=NULL;GetMemory(str);strcpy(str,"helloworld");printf(str);}试题2:char*GetMemory(void){charp[]="helloworld";returnp;}voidTest(void){char*str=NULL;str=GetMemory();printf(str);}试题3:voidGetMemory(char**p,intnum){*p=(char*)malloc(num);}voidTest(void){char*str=NULL;GetMemory(&str,100);strcpy(str,"hello");printf(str);}试题4:voidTest(void){char*str=(char*)malloc(100);strcpy(str,"hello");free(str);...//省略的其它语句}解答:试题1传入中GetMemory(char*p)函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完char*str=NULL;GetMemory(str);str2中charp[]="helloworld";returnp;的p[]员常犯的错误,其根源在于不理解变量的生存期。3GetMemory4GetMemory的参数为字符串指针GetMemory中执行申请内存及赋值语句*p=(char*)malloc(num);后未判断内存是否申请成功,应加上:if(*p==NULL){...//进行申请内存失败处理}试题4存在与试题6同样的问题,在执行char*str=(char*)malloc(100);后未置str为空,导致可能变成一个“野”指针,应加上:str=NULL;3Testmalloc的内存进行释放。分析:试题1~4考查面试者对内存操作的理解程度,基本功扎实的面试者一般都能正确的回答其中50~60的错误。但是要完全解答正确,

温馨提示

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

评论

0/150

提交评论