好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

清华大学计算机系C++期末考试题及答案 2.doc

8页
  • 卖家[上传人]:zw****58
  • 文档编号:43022600
  • 上传时间:2018-06-04
  • 文档格式:DOC
  • 文档大小:41.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • C++期末考试题期末考试题一、、 填空题填空题(25 小题,共 50 分) (以下每小题(以下每小题 1 分,共分,共 10 分)分) 1. 在 C++中,函数的参数有两种传递方式,它们是值传递和____________地址或指针 或引用传递 2. 当一个成员函数被调用时,该成员函数的 ___________指向调用它的对象this 指针 3. 在基类和派生类中,派生类可以定义其基类中不具备的数据和操作对两个有相同名 字的数据成员进行访问时,如果没有 ___________,对此数据成员的访问将出现歧义作 用域分隔符限定时 4. 拷贝构造函数使用 ___________作为参数初始化创建中的对象引用 5. 在公有继承的情况下,基类数据成员在派生类中的访问权限 ___________保持不变 6. 描述命题“A 小于 B 或小于 C“的表达式为 ___________Acfloat x;x=(b-a)/('F'-'A');printf(“%d\n“,(int)(3.14*x));} 22. 下面程序的运行结果是 ___________include “iostream.h“ void main( ) {int i=1;while (iclass A{public:A(){coutint a[ ]={1,3,5,7,9};int *p[ ]={a,a+1,a+2,a+3,a+4};void main( ){printf(“%d\t%d\t%d\n“,a[4],*(a+2),*p[1]);printf(“%d\t%d\t%d\n“,**(p+1)+a[2],*(p+4)-*(p+0),*(a+3)%a[4]); } 结果: 9 5 3 8 4 7 二、二、 问答题问答题(每小题 5 分,共 20 分) 1. 若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可 能会产生什么问题? 解答要点:当对象含有指针数据成员,并用它初始化同类型的另一个对象时,缺省的拷贝 构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内 存单元也复制过去。

      这样,就可能出现同一内存单元释放两次,导致程序运行出错2. 简述成员函数、全局函数和友元函数的差别解答要点:以下几点必须说清楚:成员函数是在类内部定义的,作用域在类的内部,成员函数可以访问类的数据成员 (公有、保护和私有数据成员) ,可以调用该类的其它成员函数(公有、保护和私有成员函 数) ,可以调用全局函数如果友元函数是另一个类的公有成员函数,则该类的成员函数也 只能通过那个类的对象调用,不能调用那个类的保护和私有成员函数非本类成员函数 (其它类成员函数或全局函数)可以通过该类的对象访问该类的公有数据成员和调用该类 的的公有成员函数不是在类中定义的成员函数都是全局函数如果某一个函数(全局函数或类的成员函数)定义为另一个类的友元函数,需要在那 个类中用 friend 关键字声明,友元函数并不是类的成员,它的定义自然是在那个类的外面3. 简述结构化的程序设计、面向对象的程序设计的基本思想 解答要点:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的, 面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通 过接口进行通信,它能够较好地支持程序代码的复用。

      4. 结构 struct 和类 class 有什么异同? 解答要点:struct 和 class 都可以定义类,但是缺省访问权限说明时,struct 的成员是公有的, 而 class 的成员是私有的在 C++中,struct 可被 class 代替三、找出下面程序(或程序段)中的语法错误,并予以纠正三、找出下面程序(或程序段)中的语法错误,并予以纠正(每小题 4 分,共 8 分) (1)程序功能是倒序输出各给定的字符串include void main(){char str[5][ ]={“First“,“Second“,“Third“,“Forth“,“Fifth“};char *cp[ ]={str[4],str[3],str[2],str[1],str[0]};int i; while(ivoid main(){int max,a,i;scanf(“%d%d“,max,a);double x[max];for (i=0;i“② “scanf(“%d%d“,max,a);“应为“scanf(“%d%d“,“③ “double x[max];“改为:“double *x=new double[max];“…“delete []x;“四、四、 ((8 分)下列分)下列 shape 类是一个表示形状的抽象类,类是一个表示形状的抽象类,area( )为求图形面积的函数,为求图形面积的函数,total( ) 则是一个通用的用以求不同形状的图形面积总和的函数。

      请从则是一个通用的用以求不同形状的图形面积总和的函数请从 shape 类派生三角形类类派生三角形类 (triangle)、矩形类(、矩形类(rectangle)) ,并给出具体的求面积函数并给出具体的求面积函数 class shape{ public: virtual float area( )=0; }; float total(shape *s[ ],int n) { float sum=0.0; for(int i=0;iarea( ); return sum; }class Triangle:public Shape{public:Triangle(double h,double w){H=h;W=w;}double Area() const{return H*W*0.5;}private:double H,W;}; class Rectangle:public Shape{public:Rectangle(double h,double w){H=h;W=w;}double Area()const{return H*W;}private:double H,W;};五、五、 ((6 分)完成顺序查找函数分)完成顺序查找函数 f_seq( )。

      其过程是:从表头开始,根据给定的模式,逐项其过程是:从表头开始,根据给定的模式,逐项 与表中元素比较如果找到所需元素,则查找成功,并打印出它在表中的顺序号如果查与表中元素比较如果找到所需元素,则查找成功,并打印出它在表中的顺序号如果查 找整个表仍未找到所需对象,则查找失败找整个表仍未找到所需对象,则查找失败#include void f_seq(char *list[],char *object,int len)//list 指针数组,指向字符串//object 模式串//len 表的长度{char **p;int strcmp(char *s,char *t); p=list;while ( ___________)if (strcmp(*p,object)==0)break;else ___________;if (pnext;head->next=NULL;while(___________){temp1=head;___________;temp2=p;p=p->next;___________;}//Match while statenmentreturn head; //返回逆置后的链表的头结点}。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.