2、定义一个Shape类含一个求面积的纯虚函数,由Shape类派生圆类、矩形类和三角形类求面积函数和求周长函数
《面向对象程序设计C++》期末试卷及标准答案(A)

《面向对象程序设计C++》期末考试试卷(A)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第10页上)一、选择题(每小题2分,共40分)1、C++是(C)。
A. 面向对象的程序设计语言B. 面向过程的程序设计语言C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言D. 非结构化的程序设计语言2、面向对象程序设计思想的主要特征中不包括( D )。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=( B )。
A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、下列语句中,将函数int sum(int x, int y)正确重载的是(C )。
A. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);6、下列表示引用的方法中,(A )是正确的。
已知:int a=1000;A. int &x=a;B. char &y;C. int &z=1000;D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A )。
virtualfree函数的详细用法

虚函数是C++中的一个非常重要的概念,它允许我们在派生类中重新定义基类中的函数,从而实现多态性。
在本文中,我们将深入探讨virtual关键字的作用,以及virtual函数和纯虚函数的使用方法。
在C++中,virtual关键字用于声明一个虚函数。
这意味着当派生类对象调用该函数时,将会调用其在派生类中的定义,而不是基类中的定义。
这种行为使得我们能够在派生类中定制化地实现函数的逻辑,从而实现不同对象的不同行为。
对于virtual函数,我们需要注意以下几点:1. 在基类中声明函数时,使用virtual关键字进行声明。
2. 派生类中可以选择性地使用virtual关键字进行重声明,但通常最好也使用virtual,以便明确表明这是一个虚函数。
3. 当使用派生类对象调用虚函数时,将会根据对象的实际类型调用适当的函数实现。
4. 虚函数的实现通过虚函数表(vtable)来实现,这是一张函数指针表,用于存储各个虚函数的位置区域。
除了普通的虚函数外,C++还提供了纯虚函数的概念。
纯虚函数是在基类中声明的虚函数,它没有函数体,只有声明。
这意味着基类不能直接实例化,只能用作其他类的基类。
纯虚函数通常用于定义一个接口,而具体的实现则留给派生类。
接下来,让我们以一个简单的例子来说明虚函数和纯虚函数的用法。
假设我们有一个基类Shape,它包含一个纯虚函数calcArea用于计算面积。
有两个派生类Circle和Rectangle,它们分别实现了calcArea 函数来计算圆形和矩形的面积。
在这个例子中,我们可以看到基类Shape定义了一个纯虚函数calcArea,它没有函数体。
而派生类Circle和Rectangle分别实现了这个函数来计算不同形状的面积。
当我们使用Shape指针指向Circle或Rectangle对象时,调用calcArea函数将会根据对象的实际类型来调用适当的实现。
除了虚函数和纯虚函数外,C++中还有虚析构函数的概念。
VC++实验指导书

Visual C++程序设计实验指导书实验1 认识Visual C++6.05中文版开发环境实验内容(1)熟悉VisualC++6。
05的开发环境。
(2)操作工具栏和项目工作区窗口。
(3)用应用程序向导创建一个控制台应用项目Ex_Hello。
(4)输入并执行一个新的C++程序Ex_Simple.实验准备和说明(1)建议在本教材第一次上课时进行本次实验。
(2)熟悉Windows 2000或XP操作系统的环境和基本操作。
(3)熟悉实验报告的书写格式,这里给出一下建议:实验报告采用A4纸,封面一般包括实验目次.实验题目,班级,姓名,日前和机构名称.报告内容一般包括实验目的和要求。
实验步骤,实验思考和总结。
需要指出的是,实验步骤不是书本内容的重复,而是自己结合实验内容进行探索的过程,教师也可根据具体情况提出新的实验报告格式和新的要求.(4)阅读以下关于VisualC++的说明:Visual C++是Microsoft公司推出的目前使用极为广泛的基于WINDOUWS平台的可视化编程环境。
是在以往的版本不断更新的基础上形成的,其功能强大,灵活性好,完全可以扩展以及具有强有力的Internet支持,在各种c++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。
Visual C++6。
0分为标准版,企业版和专业版3种,但其基本功能是相同。
Visual C++6。
5中文版是在Visual C++6。
0基础上进行汉化的以一个版本,本书以此版本作为编程环境。
为统一起见,我们仍称之为Visual C++6.0。
实验步骤1。
打开计算机,启动windouws2000操作系统2。
建工作文件夹3。
启动Visual C++6.04。
创建一个控制台应用项目5。
认识开发环境界面6。
认识工具栏7。
工具栏的显示和隐藏8.工具栏的浮动与停泊9。
项目工作区窗口10。
修改代码,编译运行11。
输入一个新的C++程序12。
修正语法错误13.退出Visual C++6。
《面向对象程序设计C++》期末试卷及标准答案(A)

《面向对象程序设计C++》期末考试试卷(A)试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第10页上)一、选择题(每小题2分,共40分)1、C++是()。
A. 面向对象的程序设计语言B. 面向过程的程序设计语言C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言D. 非结构化的程序设计语言2、面向对象程序设计思想的主要特征中不包括()。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=()。
A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是()。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、下列语句中,将函数int sum(int x, int y)正确重载的是()。
A. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);6、下列表示引用的方法中,()是正确的。
已知:int a=1000;A. int &x=a;B. char &y;C. int &z=1000;D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()。
C++复习题

C++作业题(8)一.选择填空(1) 定义重载函数的下列条件中,(C )是错误的。
A. 要求参数个数不同B. 要求参数类型不同C. 要求函数返回值类型不同D. 要求在参数个数相同时,参数类型的顺序不同(2) 关于下列虚函数的描述中,( C)是正确的。
A. 虚函数是一个static存储类的成员函数B. 虚函数是一个非成员函数C. 基类中说明了虚函数后,派生类中可不必将对应的函数说明为虚函数D. 派生类的虚函数与基类的虚函数应具有不同的类型或个数(3) 关于纯虚函数和抽象类的描述中,(C )是错误的。
A. 纯虚数是一种特殊的虚函数,它没有具体实现B. 抽象类中一定具有一个或多个纯虚函数C. 抽象类的派生类中一定不会再有纯虚函数D. 抽象类一般作为基类使用,使纯虚函数的实现由其派生类给出(4) 以下一种类中,( A)不能建立对象。
A. 抽象类B. 派生类C. 虚基类D. 基类(5)下列函数中不能重载的是( C )。
A)成员函数 B)非成员函数 C)析构函数 D)构造函数(6)下列描述中,抽象类的特征有( D )。
A)可以说明虚函数 B)可以构造函数重载 C)可以定义友员函数 D)不能说明其对象(7)下列不属于动态联编实现的条件有( D )。
A)要有说明的虚函数。
B)调用虚函数的操作是指向对象的指针或者对象引用:或者是由成员函数调用虚函数。
C)子类型关系的确立。
D)在构造函数中调用虚函数。
(8)派生类中对基类的虚函数进行替换时,派生类中说明的虚函数与基类中的被替换的虚函数之间不要求满足的是( C )。
A)与基类的虚函数具有相同的参数个数。
B)其参数的类型与基类的虚函数的对应参数类型相同。
C)基类必须定义纯虚函数。
D)其返回值或者与基类的虚函数相同,或者都返回指针或引用,并且派生类虚函数所返回的指针或引用的基类型是基类中被替换的虚函数所返回的指针或引用的基类的子类型。
(9)下列关于抽象类说法正确的是:( B )A)抽象类处于继承类层次结构的较下层。
上机练习1

1.定义一个抽象类Shape,它包含一个抽象方法getArea(),从
Shape类派生出Rectangle和Circle类,这两个类都用
getArea()方法计算对象的面积,编写应用程序使用Rectangle
和Circle类。
2.定义Parent和son两个类,其中都定义一个成员变量x,并定义
一个父类的构造方法初始化成员变量x,在Person类中定义一个show()方法用来显示成员变量x的值,son类继承Person类,通过super引用父类的成员变量及其构造方法,在son类中覆盖父类的show()方法,该方法的功能用于显示父类的成员变量x和子类的成员变量x。
注明:
课程名称:java程序设计;
实验室:信传楼210;
上机项目:继承的应用;
上机时间:11-22;
上机学时:2学时
作业在下周周四(12-12)上数据库上机时上交,因要统一装订,请大家务必在规定时间内上交。
本次共下发六张实验报告纸,java两次,数据库一次,请大家合理分配。
定义一个类为形状类

定义一个类为形状类,由它公有派生出圆、正方形、长方形。
利用多态性以及虚函数的形式完成计算圆、正方形、长方形的面积。
具体要求如下:(1)基类: shape保护数据成员:double a,b;公有构造函数:shape(double,double);公有纯虚函数:double area();(2)派生类圆、正方形、长方形的类名分别为circle,square,rectangle,各派生类均需要定义公有的构造函数以及求面积的虚函数double area()。
(3)派生类为圆形时,a表示半径,b为0。
派生类为正方形时,a为边长,b为0。
派生类为长方形时,a为长,b为宽。
(4)设计一个完整的程序,分别计算圆、正方形、长方形的面积并输出结果。
测试数据如下:基类指针变量:p、圆类对象:C(0.8)、正方形类对象:S(3.2)和长方形类对象:R(4.1,5)。
用指针p分别指向派生类对象。
输出结果为:圆的面积是2.0096正方形的面积是10.24长方形的面积是20.5定义一个类为形状,由它公有派生出正方体、球体和圆柱体。
利用虚函数的多态性形式完成计算正方体、球体和圆柱体的体积。
具体要求如下:(1)基类: shape保护数据成员:double a,b;公有构造函数:shape(double,double);公有纯虚函数:double volume ();(2)派生类正方体、球体和圆柱体的类名分别为cube,sphere,cylinder, 各派生类均需要定义公有的构造函数以及求体积的虚函数double volume ()。
(3)派生类为球体时,a为半径,b为0。
派生类为正方体时,a表示边长,b为0。
派生类为圆柱体时,a为圆柱体的边长,b为圆柱体的高。
(4)设计一个完整的程序,分别计算正方体、球体和圆柱体的体积并输出结果。
测试数据如下:形状类指针变量:p、球体对象:C(0.8)、正方体对象:S(3.2)和圆柱体类对象:R(4.1,5)。
C++面向对象程序设计复习练习试题带答案(4)

C++面向对象程序设计模拟试题二一、判断题(每题2分,共12×2=24分)1.按照标识符的要求,下划线是不能组成正确标识符的。
()2.C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。
()3.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
()4.在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型。
()5.For循环是只有可以确定的循环次数时才可使用,否则不能用for 循环。
()6.返回值类型、参数个数和参数类型都相同的函数也可以重载。
()7.重新定义的标识符在定义它的区域内是可见的,而与其同名的原标识符在此区域内是不可见的但是却是存在的。
()8.通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。
()9.友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。
()10.已知:类A中一个成员函数说明如下:void Set(A&a);其中A &a的含意是将a的地址值赋给变量Set。
()11.具有转换函数功能的构造函数,是指只能带有一个或两个参数的构造函数。
()12.多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序,而与派生类构造函数中所定义的成员初始化列表的各项顺序无关。
()二、读程题,写出程序的运行结果。
(1~2题每题6分,3~4题每题8分,共28分)1、#include<iostream.h>void main(){int i(0);while(++i){if(i= =10) break;if(i%3!=1) continue;cout<<i<<endl;}}2、#include <iostream.h>int a[8]={1,2,3,4,5,6,7};void fun(int *pa,int n);void main( ){ int m=8;fun(a,m);cout<<a[7]<<endl;}void fun(int *pa,int n){ for (int I=0;I<n-1;I++)*(pa+7)+= *(pa+I);}3、#include<iostream.h>void ff(int x),ff(double x);void main(){ float a(88.18);ff(a);char b('a');ff(b);}void ff(int x){ cout<<"ff(int): "<<x<<endl; }void ff(double x){ cout<<"ff(double): "<<x<<endl;}4、#include <iostream.h>class AA{ public:AA(int i,int j){A=i;B=j;cout<<"Constructor\n";}AA(AA &obj){A=obj.A+1;B=obj.B+2;cout<<"Copy_Constructor\n";} ~AA(){cout<<"Destructor\n";}void print(){cout<<"A="<<A<<",B="<<B<<endl; }private:int A,B;};void main(){ AA a1(2,3);AA a2(a1);a2.print();AA *pa=new AA(5,6);pa->print();delete pa;}三、编程题(每题10分,共10×2=20分)1、编写程序求1至100间所有素数之和,其中求素数要求用函数实现;2、编程打印如下图形:122333444455555四、综合分析应用题(共28分)1、阐述C++中函数三种调用的方式实现机制、特点及其实参、形参的格式,最好用代码说明(10分)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、定义一个基类Shap,包含一个求面积的纯虚函数,由Shap类派生圆类、矩形类和三角形类,定义各自的数据成员、构造函数、求面积函数和求周长函数。
编写主函数,定义各类对象及基类指针,通过基类指针调用求面积和周长函数,计算各对象的面积和周长。
#include<iostream.h>
#include<Cmath>
class Shape
{public: virtual double mianji() const=0;};
class Yuan:public Shape
{public: Yuan(double r):radius(r){}
double mianji() const
{cout<<"圆的面积为:"<<3.14159*radius*radius<<endl;
return 0;}
void Yuan::zhouchang()
{cout<<"圆的周长为:"<<2*3.14159*radius<<endl;}
private: double radius;};
class Juxing:public Shape
{public: Juxing(double l,double w):length(l),width(w){}
double mianji() const
{cout<<"矩形面积为:"<<length*width<<endl;
return 0;}
void Juxing::zhouchang()
{cout<<"矩形周长为:"<<2*(length+width)<<endl;}
private: double length,width;};
class Sanjiaoxing:public Shape
{public: Sanjiaoxing(double i,double j,double k):a(i),b(j),c(k){}
double mianji() const
{double p;
p=(a+b+c)/2;
cout<<"三角型面积为:"<<sqrt(p*(p-a)*(p-b)*(p-c))<<endl; //海伦公式求三角型面积
return 0;}
void Sanjiaoxing::zhouchang()
{cout<<"三角形周长为:"<<a+b+c<<endl;}
private: double a,b,c;};
int main(void)
{Shape *p=NULL;
double e,f,g,h,m,n;
cout<<"请输入圆的半径,矩形的长,宽和三角形的三边(满足三角形法则,并以空格为间隔)<<\n";
cin>>e>>f>>g>>h>>m>>n;
Yuan yuan(e);
Juxing juxing(f,g);
Sanjiaoxing sanjiaoxing(h,m,n);
p=&yuan;
p->mianji();
yuan.zhouchang();
p=&juxing;
p->mianji();
juxing.zhouchang();
p=&sanjiaoxing;
p->mianji();
sanjiaoxing.zhouchang();
system("pause");
return 0;}。