数学院06-07-1-C++试题(AB)卷(05级)答案.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数学院06-07-1-C试题(AB)卷(05级)答案

兰州大学2006~2007学年第 一 学期 期末考试试卷(A卷) 课程名称: C++ 任课教师: 董国雄 学院: 数学与统计学院 专业: 基础、应用数学 年级: 2005 姓名: 校园卡号: 题 号 一 二 三 四 五 六 七 八 总分 分 数 40 15 15 15 15 100 阅卷教师 一、简答(40分) 1、程序设计语言目的是什么?和自然语言比较,有些什么异同点? 答:用于编制程序,指挥机器的软硬件资源协同动作,以解决问题。同自然语言一样,有字、词、语法。程序员和机器可共同理解,确切的说,是编译器理解的语言。 2、解释如下公式“程序 = 数据结构 + 算法”、“程序 = 对象 + 消息”。 答:“程序 = 数据结构 + 算法”反映了结构化程序设计中程序的结构,将数据和处理数据的代码分离,方法用过程和函数组织,作用在具一定结构的数据之上。“程序 = 对象 + 消息”反映了OOP程序设计中的程序结构,将数据和处理数据的方法封装在类当中,对象之间通过传递消息彼此调用,以实现程序功能。 3、说明类和对象的关系,类封装了哪两类成分? 答:类是对象共同特征的抽象,类封装了对象的特征和行为,对象是类的实例。 4、一个C++源程序从逻辑角度看,可以认为是一个函数的集合或类和对象的集合。从物理角度看,由多个文件组成,请讲述一下,文件内容组织的基本原则和各个文件中之间的关系。 答:C++程序由包含类、函数、变量的多组文件构成,一组文件由同名的头文件和代码实现文件组成。头文件包含在使用其中定义标识符的代码文件当中,各个文件完成相对独立的功能,彼此进行引用。 5、参数的传递方式有地址传递和值传递,C++具体实现方式是怎样的,各有什么特点? 答:C++用指针和引用实现地址传递,其它的参数传递方式为指传递。地址传递传递到函数的是实参的地址,函数直接对实参进行操作,而地址传递通过实参复制传递值到函数,函数操作的是复制后的对象,与原实参没有关系。 6、使用指针时,对其哪两个方面应有清楚的界定?判断一个指针是否指向了一个合法对象的原则是什么? 答:指针指向对象的地址和对象的类型。如果指针是一个非空指针,认为其指向一个合法的对象。 7、动态内存申请和释放给程序带来的最大好处是什么?举一例说明典型应用场景。 答:增强了程序的灵活性和动态适应性,可以处理预先不能确定处理对象规模的问题。如要处理一批学生对象,预先并不知道学生个数,在运行期间根据用户交互确定,则可用动态内存申请分配获得合适的对象个数。 8、请举例说明类的缺省赋值行为在某些应用中不能满足对象复制的逻辑要求。 答:如设计一个字符串类,类中用一个指向字符数组的指针指向动态申请的字符串存储空间。缺省赋值行为将使不同的字符串指向同一内存空间,而被赋值字符串的存储空间丢失,从而发生错误。 二、(15分) 写一函数,此函数返回一个整数数组中第一个最大值的下标。要求用指针传递参数,可以处理任意长度的数组。 解:int SubsOfFirstMax(int * array, int n) { int s = 0; for (int k = 0; k n; k++ ) if ( *(array + k) *(array + s) ) s = k; return s; } 三、(15分) 写一递归函数,求1*1+2*2+……+n*n的和。 解:int SumOfExpr(int n) { if (n=0) return 0; else return n*n + SumOfExpr(n-1); } 四、(15分) 实现一个复数类Complex,要求:(1)至少实现拷贝构造函数和一个转换构造函数;(2)重载加法运算符;(3)重载插入运算符;(4)写一段代码测试你的类,其中要用到动态内存申请分配。 解: class Complex { private: double real; double imag; public: Complex() { real = 0, imag = 0; }; //缺省构造函数 Complex(double r, double i) { real = r, imag = i; }; Complex(Complex c) {real = c.real; imag = c.imag; }; //Copy Complex(double r) { real = r; imag = 0; }; //转换构造函数

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档