“最新答案“东师大2020春季《C程序设计(高起专)》离线考核
离线考核C+程序设计(高起专) 满分100分一、简答题(每小题10分, 共40分。)1.什么是类?什么是对象?对象与类的关系是什么?答:(1) 类是一组具有共同的属性特征和行为特征的对象的抽象;(2) 对象就是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组行为构成。(3) 类和对象之间的关系是抽象和具体的关系,类是对多个对象进行抽象的结果,对象是类的具体实现。2.什么是多态性?请举例说明。答:多态性是面向对象程序的重要特征,它是指不同的对象收到相同的消息时产生不同的行为方式。例如我们同样双击windows系统桌面上的图标时,有的是打开媒体播放器,有的是打开D盘,而有的是关机。3.虚函数是否一定要有virtual关键字?什么叫纯虚函数和抽象类?多态调用需要满足怎样的条件?答:不一定,派生类覆盖基类的成员函数时,没有virtual关键字,也是虚函数;纯虚函数没有实现,它供派生类覆盖,纯虚函数的一般定义形式为:virtual 返回类型 函数名(参数表) = 0;至少含有一个纯虚函数的类称为抽象类,抽象类不能定义对象,只能作为基类;多态调用需要满足的条件:(1)被调用的成员函数是虚函数;(2)用指针或引用调用虚函数。4.简述结构化的程序设计、面向对象的程序设计的基本思想。答:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。二、程序分析题(每小题10分,共40分。)1. 指出下列程序中的1处错误,并说明为什么。class Location int X,Y=20;protected: int zeroX,zeroY; int SetZero(int ZeroX,int ZeroY);private: int length,height;public: void init(int initX,int initY); int GetX( ); int GetY( );答:错误语句:int X,Y=20;错误原因:数据成员不能在类定义中初始化2指出下列程序中的1处错误,并说明为什么。#include<iostream.h>#include<stdlib.h>class CTestpublic: const int y2; CTest(int i1, int i2,int i3):y1(i1),y2(i2) x=i3; int show() constcout<<"y1="<<y1<<"ny2="<<y2<<"nx="<<x<<endl; /private: int x; const int y1;void main() CTest c(1,2,3); c.show(); c.y2 = -2; c.show();答: 错误位置:c.y2=-2;错误原因:y2是常数据成员,而常数据成员的值是不能被改变的。3写出下面程序的输出结果。#include <iostream.h>class B int b; public: B(int i) b=i; virtual void virfun() cout<< "B:b: "<<b<<" , "class D: public B public: D(int i,int j): B(i) d=j; void virfun() B:virfun(); cout<<"D:d: "<<d<<endl; private: int d;void fun(B *objp) objp->virfun(); void main() D *pd=new D(3,5) ; fun(pd);答:程序输出结果为:B:b: 3 , D:d: 54. 写出下面程序的运行结果。#include<iostream.h>class examplepublic: example(int n) i=n; cout<<"Constructingn" example() cout<<"Destructingn" int get_i() return i; private : int i;int sqr_it(example o) return o.get_i()*o.get_i(); main () example x(10); cout<<x.get_i()<<endl; cout<<sqr_it(x)<<endl; return 0;答:程序输出结果为:Constructing10Destructing100Destructing三、完成程序题(每小题10分,共20分。)1请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。#include<iostream.h>class Integerint x;public:Integer(int a=0)x=a;void display( )cout<<x<<endl;friend Integer Max(Integer a,Integer b); ;Integer Max(Integer a,Integer b)if(a.x>b.x )return a;return b;void main( )Integer a(3),b(5),c;c=Max(a,b);c.display( );2. 设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。 答:#include<iostream.h> #include<math.h> class Triangle int x,y,z; double area; public: Triangle(int i,int j,int k) double s; x=i;y=j;z=k; s=(x+y+z)/2.0; area=sqrt(s*(s-x)*(s-y)*(s-z); void disparea() cout<<"Area="<<area<<endl; friend double operator+(Triangle t1,Triangle t2) return t1.area+t2.area; ; void main() Triangle t1(3,4,5),t2(4,5,6); double s; cout<<"t1:" t1.disparea(); cout<<"t2:" t2.disparea(); s=t1+t2; cout<<"总面积="<<s<<endl;