C程序设计试验参考指导书(2).doc
《C程序设计试验参考指导书(2).doc》由会员分享,可在线阅读,更多相关《C程序设计试验参考指导书(2).doc(55页珍藏版)》请在咨信网上搜索。
杜红燕 编 《C++程序设计》 课程试验指导书 长 沙 学 院 计 算 机 科 学 和 技 术 系 前 言 本书是《C++程序设计》课程试验指导书。初学程序设计人,全部有一个体会,看程序轻易,但自己动手写程序难,甚至感觉无从下手,究其原因就在于没有把握住学习程序设计根本方法,学习程序设计关键是多实践,经过上机体会和掌握程序设计思想和方法,经过上机验证程序正确性,为此我们编写了这本试验指导书。 本书关键内容分为三个部分,第一部分为试验内容,对每个试验试验目标、试验类型、试验课时、试验原理及知识点、试验环境(硬件环境、软件环境)和试验内容及步骤进行简单介绍,第二部分为试验指导,对每个试验试验方法,试验步骤及补充试验知识进行具体介绍,第三部分为试验汇报。 C++程序设计环境有很多,在这里我们选择是MicroSoft Visual C++ 6.0。对书中每个试验题目,在试验指导部分全部给出了编程提醒,部分试验给出了程序参考代码,最终还介绍了常见标准库函数函数原型。 需要强调一点,程序设计是一个创作过程,处理一个问题方法不是唯一,所以请大家在阅读本书试验指导之前,已经独立思索过对这些问题处理方法,这么才有利于程序设计水平提升。 编者 2 月 目 录 第一部分 试验内容 试验1:类定义和结构……………………………………………………………………2 试验2:堆和拷贝结构函数、静态组员和友元、运算符重载……………………………4 试验3:经过继承进行软件渐增式开发…………………………………………………8 试验4:I/O流和文件操作………………………………………………………………….11 试验5:模板和异常处理……………………………………………………………………13 第二部分 试验指导 Visual C++ 6.0集成环境………………………………………………………………….16 试验1:类定义和结构……………………………………………………………………26 试验2:堆和拷贝结构函数、静态组员和友元、运算符重载……………………………31 试验3:经过继承进行软件渐增式开发…………………………………………………34 试验4:I/O流和文件操作…………………………………………………………………..39 试验5:模板和异常处理…………………………………………………………………… 43 C/C++常见标准库函数……………………………………………………………………… 46 第一部分 试验内容 试验1:类定义和结构 一、试验目标 1、掌握类定义和使用 2、学习结构类方法 3、掌握怎样定义结构函数和析构函数 4、掌握初始化对象方法 5、了解面向对象程序设计思想 二、试验类型 验证 三、试验课时 4课时 四、试验原理及知识点 1、类定义 2、类组员访问控制 3、类数据组员和组员函数 4、结构函数和析构函数 5、对象定义和初始化 五、试验环境(硬件环境、软件环境) 1、软件:Windows 操作系统,Visual C++ 6.0 2、硬件:CPU 飞跃Ⅲ;内存64兆以上(最好128兆以上); 六、试验内容及步骤 1、定义一个描述学生通讯录类,数据组员包含:姓名、学校、电话号码和邮编;组员函数包含:输出各个数据组员值,分别设置和获取各个数据组员值。 2、将第一个上机试验题中组员函数Init改为结构函数,将组员函数FreeSpace改为析构函数。增加一个缺省结构函数,使指针pName,pSchool和pNum初值为0,使Box包含空字符串。 3、定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形式表示,即24/36应该以2/3形式表示,并提供public组员函数实现以下功效: (1) 两个分数相加,结果表示为简化形式; (2) 两个分数相减,结果表示为简化形式; (3) 按a/b形式输出分数值,a、b为整数; (4) 按浮点数形式输出分数值。 七、思索和练习 1、编写Time类,要求: (1) 包含年、月、日、时、分、秒信息; (2) 结构函数将类对象初始化为系统目前时间(使用头文件time.h中time()函数); (3) 能按标准格式输出对象表示时间。 2、编写矩形类,要求能够提醒用户输入矩形长度和宽度,并显示该矩形长度、宽度和面积。 试验2:堆和拷贝结构函数、静态组员和友元、运算符重载 一、试验目标 1、领会拷贝结构函数实质 2、学会使用堆对象分配和释放 3、领会运算符重载意义 4、学会使用this指针 5、了解友元语法和含义 6、在此基础上领会和掌握面向对象程序设计思想。 二、试验类型 验证 三、试验课时 4课时 四、试验原理及知识点 1、堆对象分配和释放 2、拷贝结构函数 3、类复合 4、This指针 5、静态数据、友元函数和友元类 6、运算符重载概念 7、单目运算符重载 8、双目运算符重载 9、重载流插入和流提取运算符 10、赋值运算符重载 五、试验环境(硬件环境、软件环境) 1、软件:Windows操作系统,Visual C++ 6.0 2、硬件:CPU 飞跃Ⅲ;内存64兆以上(最好128兆以上); 六、试验内容及步骤 1、建立一个Stock类,含有股票代码和股票现价两个数据组员。用new自动为Stock类对象分配内存,并将股票”600001”,现价8.89存入内存对应域中。在类中增加静态数据组员记载创建对象个数,增加拷贝结构函数并调用。 2、对以下圆柱类Column定义: class Column { public: Column(double x, double y, double r, double h); ~Column(); double area(); //求圆柱面积 double volume(); //求圆柱体积 private: double height; //高度 double radius; //半径 double x; //底面圆心x坐标 double y; //底面圆心y坐标 }; 要求: (1) 实现类Column中四个组员函数; (2) 增加一个友元函数,实现从键盘读取四个double类型数据对类Column对象进行赋值功效; (3) 增加一个友元函数,实现将类Column对象输出到屏幕功效,输出信息包含对象基础信息和对象面积和体积。 3、对于下面定义类Test: class Test { private: int a; double b; }; 要求: (1) 为类Test每个数据组员增加一个set函数,并使这些set函数全部能够被连续调用; (2) 为类Test每个数据组员增加一个get函数。 (3) 假如要求全部get函数全部能够被连续调用,这些函数该怎样编写? 4、 定义一个复数类,经过重载运算符: *,/,直接实现二个复数之间乘除运算。编写一个完整程序,测试重载运算符正确性。要求乘法“*”用友元函数实现重载,除法“/”用组员函数实现重载。 七、思索和练习 1、定义一个复数类,经过重载运算符: *,/,直接实现二个复数之间乘除运算。编写一个完整程序,测试重载运算符正确性。要求乘法“*”用友元函数实现重载,除法“/”用组员函数实现重载。 2、定义包含年、月、日信息日期类Date,并重载二元运算符“+”,使之含有日期对象和整数(天数)相加功效,并编程测试。 3、下列程序定义了一实部为real,虚部为imag复数类complex,要求重载运算符“+”、“-”、“*”实现复数对象加法、减法、乘法运算,并编写测试程序。假如要进行a = b + c * d;(a、b、c、d全部是类Complex对象)这么运算,需要重载赋值运算符吗?为何? class Complex{ public: complex(double r=0, double i=0) { real=r; imag=i; } private: double real, imag; }; 4、于下面类MyString,要求重载部分运算符后能够计算表示式:a = b + c;,其中a、b、c全部是类MyString对象。请重载对应运算符并编写程序测试。 class MyString { public: MyString(char *s) { str = new char[strlen(s)+1]; strcpy(str, s); } ~MyString() { delete []str; } private: char *str; }; 5、对于下面Time类: class Time { public: Time(int h = 0, int m = 0, int s = 0); private: int hour, minute, second; }; 要求: (1) 实现结构函数,是类Time数据组员能够得到正确赋值; (2) 重载流插入运算符<<,根据hh:mm:ss格式输出类Time对象; (3) 重载流提取运算符>>,根据hh-mm-ss格式输入类Time对象。 试验3:经过继承进行软件渐增式开发 一、试验目标 1、掌握继承方法,了解多态性 2、掌握虚函数使用方法,观察其多态性 3、掌握软件渐增式开发方法 二、试验类型 设计 三、试验课时 6课时 四、试验原理及知识点 1、继承和派生基础概念 2、继承定义 3、基类和派生类对象转换 4、类指针使用 5、多态性意义和作用 6、虚函数定义方法 7、抽象基类作用和定义方法 8、虚析构函数作用和使用方法 9、怎样在程序中实现多态性 10、软件渐增式开发方法 五、试验环境(硬件环境、软件环境) 1、软件:Windows操作系统,Visual C++ 6.0 2、硬件:CPU 飞跃Ⅲ;内存64兆以上(最好128兆以上); 六、试验内容及步骤 1、下面是一个形状类Shape,编写类Shape派生类:圆类Circle、三角形类Triangle和矩形类Rectangle,并重定义基类组员函数使之返回正确结果(show函数要输出对象基础信息),然后编写程序测试它们。 class Shape { public: //形状面积 double area() { return 0; } //形状周长 double girth() { return 0; } //输出对象信息 void show() { cout<<"Shape Object: "<<endl; } private: }; 2、申明一个基类Currency,其中含有protected类型数据组员Japan和Europe,分别代表日元、欧元对美元汇率。组员函数set()用来设置两个数据组员初始值,定义print_exchang()为纯虚函数。申明类Ja和Eur分别为Currency派生类,其组员函数print_exchange()分别用来计算10000日元和100欧元兑换多少美元。根据通例,汇率表示方法是:1美元兑换日元116.30,1欧元兑换美元1.1634(116.30和1.1634要在set()中存入Japan和Europe中)。 3、给定以下抽象类: class shape{ protected: double r; public: shape(double x){r=x;} virtual void area()=0; virtual void perimeter()=0; }; (1) 以shape类为基类,派生一个circle圆形类、一个in_square圆内接正方形类、一个ex_square圆外接正方形类,在派生类中对shape类中求面积和周长纯虚函数进行重载。 (2) 对类进行实例化,输出运算结果 4、给定单向链表类List,要求以List类为基类建立两种类型表:队列(优异先出)和堆栈(优异后出),请编写程序实现队列和堆栈存放和读取操作,编写一个测试程序,演示类功效。 class List{ public: List() { head=NULL; tail=NULL; next=NULL; } virtual void store(int i)=0;//存放数据 virtual int retrieve()=0;//读取数据 List *next;//指向表下一项 int num;//用于存放节点数据 protected: List *head;//指向表头 List *tail;//指向表尾 }; 六、思索和练习 1、编写一个学生和老师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,老师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和老师类数据操作类teacher基类。 2、编写一个程序计算出球、圆柱和圆锥表面积和体积。 要求: (1) 定义一个基类圆,最少含有一个数据组员半径; (2) 定义基类派生类球、圆柱、圆锥,全部含有求表面积和体积组员函数和输出函数。 (3) 定义主函数,求球、圆柱、圆锥和体积。 试验4: I/O流和文件操作 一、试验目标 1、掌握文件和流概念 2、学会使用FILE结构和使用文件流进行文件打开、建立、读、写和关闭操作 二、试验类型 验证 三、试验课时 2课时 四、试验原理及知识点 1、文件和流概念 2、使用FILE结构操作文件 3、使用文件流操作文件 五、试验环境(硬件环境、软件环境) 1、软件:Windows 操作系统,Visual C++ 6.0 2、硬件:CPU 飞跃Ⅲ;内存64兆以上(最好128兆以上); 六、试验内容及步骤 1、假设有一个文件“one.dat”已经存在,编写程序创建文件“two.txt”,并将文件“one.dat”中内容复制到文件“two.txt”中。 2、下面是一个三角形类Triangle定义: class Triangle { public: Triangle(double a, double b, double c) { x = a; y = b; z = c; } int saveToFile(ostream &outFile); int loadFromFile(istream *inFile); private: double x, y, z; }; (1) 实现组员函数saveToFile,将对象本身保留到文件中; (2) 实现组员函数loadFromFile,从文件中恢复对象; (3) 编写程序使用类Triangle,并实现以下功效: (1) 将类Triangle多个对象保留到一个指定文件中; (2) 能一次从指定文件中恢复多个对象。 七、思索和练习 1、输入三角形三边a,b,c,计算三角形面积公式: Area=sqrt(s*(s-a)*(s-b)*(s-c)),其中s=(a+b+c)/2 形成三角形条件是:a>b+c,b>a+c,c>a+b; 编写程序,输入a,b,c,检验a,b,c是否满足以上条件,如不满足,由cerr输出相关犯错信息。 2、建立两个磁盘文件f1.dat和f2.dat,编写程序实现以下工作: (1) 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件放10个); (2) 从f1.dat读入10个数,然后存放到f2.dat文件原有数据后面; (3) 从f2.dat中读入20个整数,将它们按从小到大次序存放到f2.dat(不保留原来数据)。 3、设计一个管理图书目标简单程序,提供基础功效包含:可连续将新书存入文件“book.dat”中,新书信息加入到文件尾部;也能够依据输入书名进行查找;把文件“book.dat”中同书名全部书显示出来。为简单起见,描述一本书信息包含:书号,书名,出版社和作者。 试验5: 模板和异常处理 一、试验目标 了解模板概念、定义,了解C++异常处理机制。 二、试验类型 验证 三、试验课时 4课时 四、试验原理及知识点 1、异常基础概念 2、异常触发、传输和处理 3、类属程序设计 4、模板定义和使用 五、试验环境(硬件环境、软件环境) 1、软件:Windows操作系统,Visual C++ 6.0 2、硬件:CPU 飞跃Ⅲ;内存64兆以上(最好128兆以上); 六、试验内容及步骤 1、编写一个程序,使用new运算符动态分配空间,当空间分配失败时抛出异常,并捕捉处理该异常,处理异常时要考虑不能有内存泄漏。 2、写一个函数模板,求数组中最大元素。使得函数调用时,数组类型和返回值类型能够是整数也能够是双精度类型。 3、以下是一个整数栈类定义: const int SIZE=100; class Stack { public: Stack(); ~ Stack(); void Push(int n); int Pop(); private: int stack[SIZE]; int tos; }; (1) 编写一个栈类模板(包含其组员函数定义),方便为任何类型对象提供栈数据结构操作 (2) 在应用程序中创建整数栈、字符栈和浮点数栈,并提供部分数据供进栈、退栈和打印操作 七、思索和练习 求一元二次方程式ax2+bx+c=0实根,假如方程没有实根,则利用异常处理机制输出相关警告信息。 第二部分 试验指导 Visual C++ 6.0集成环境 一、VC++6.0关键菜单、工具 可视化和面向对象编程技术是当今世界流行编程技术,在众多开发工具中,Microsoft企业VC++6.0独树一帜,深得广大程序员青睐。VC++6.0提供了编写应用程序全部工具,它包含了很多单独组件,并由窗口、对话框、菜单、工具栏等组成了一个统一整体。 首先,看一下开启主界面: 1. VC++6.0菜单 Visual C++ 6.0菜单栏图所表示,其中包含File,Edit,View等共九个菜单选择项,经过它们,你能够轻松地完成编辑程序和资源、编译、链接及调试程序等各项工作。 要激活菜单栏中菜单有两种方法: 一是用鼠标左键直接单击对应菜单,另一个方法是在按住Alt键同时,按下对应菜单热键,比如要激活Edit菜单只要按下Alt+E键即可。下图 是Visual C++ 6.0主菜单,当激活某个菜单后,会弹出对应下拉子菜单。其中包含了多个菜单项,用于实施对应功效或命令 有部分常见菜单命令含有快捷键,比如File菜单中New菜单命令,它快捷键是Ctrl+N,只要直接按下此快捷键就能够实施对应菜单命令。有菜单项显示为灰色,表示这些菜单命令在此时为禁用状态。 以下介绍多个常见菜单,这些在以后编程中会常常使用。 1、 File文件菜单 File菜单图所表示,其中包含了多种对文件进行操作选项,如加载、保留、打印和退出等。各菜单项功效分述以下: New菜单项(Ctrl+N)此菜单项快捷键是Ctrl+N。用于创建新文件、工程、工作区或其它文档。当您选中此菜单项后,屏幕将会出现New对话框,图所表示。 其中包含了4个选项卡:File、Project、Workspace和Other Documents。在File选项卡中,您能够选择创建多种文件,当选中Add to project复选框时,则新创建文件将加入到目前工程中。 表1-1 New对话框中可创建项目类型工程 选项 说 明 ATL COM AppWizard 创建ATL应用程序 Cluster Resource Type Wizard 创建多重资源类型 Custom AppWizard 创建自定义AppWizard Database Project 创建数据库项目 DevStudio Add-in Wizard 创建自动化宏 Extended Stored Proc Wizard 创建扩展存放过程 ISAPI Extension Wizard 创建Internet服务器或过滤器 Makefile 创建Make文件 MFC ActiveX ControlWizard 创建ActiveX控件程序 MFC AppWizard [dll] 创建MFC动态链接库 MFC AppWizard [exe] 创建MFC可实施程序 Utility Project 创建实用工具项目 Win32 Application 创建Win32应用程序 Win32 Console Application 创建Win32控制台应用程序 此项即为控制台程序项目 Win32 Dynamic-Link Application 创建Win32动态链接库 Win32 Static Library 创建Win32静态库 在新建立程序时,首先要建立工程项目文件,依据程序类型选择工程。上表说明了多种工程项目标说明。 File选项卡中能够创建文件类型见表1-2 New对话框中可创建文件类型 文件选项 说 明 ActiveX Server Page 创建活动服务器页 Binary File 创建二进制文件 Bitmap File 创建位图文件 C/C++ Header File 创建C/C++头文件 C++ Source File 创建C++源文件 Cursor File 创建光标文件 HTML Page 创建HTML文件 Icon File 创建图标文件 2、编辑菜单 Edit菜单中命令是用来使用户便捷地编辑文件内容,如进行删除、复制等操作,其中大多数命令功效和windows中标准字处理程序编辑命令一致。 3、VIEW菜单: view菜单中命令关键用来改变窗口和工具栏显示方法,激活调试时所用各个窗口等。 4、插入菜单 Insert菜单中命令关键用于项目 及资源创建和添加。 5、Project菜单 Project菜单中命令关键用于项目 操作,如项目中添加源文件等。 6、Build菜单 Build菜单中命令关键用来应用 程序编译、连接、调试、运行。 7、工具菜单Tools菜单中命令关键用于选择 或制订开发环境中部分实用工具。 8、窗口菜单 Windows菜单中命令关键用于文档窗口操作。如排列文档、打开或关闭一个文档窗口、重组或切分文档窗口等。 9、帮助菜单 Visual C++6.0 同大多数其它Windows 应用软件一样,提供了大量具体帮助信息,而Help菜单便是得到这些帮助信息最有效和最关键路径。 2. VC++6.0标准工具栏 标准工具栏中工具按钮命令大多数是常见文档编辑命令,如新建、保留、撤消、恢复、查找等。 小型编连工具栏 小型编连工具栏提供了常见编译、连接操作命令。 二、用VC++6.0开发控制台程序 1.开启VC++6.0,选择“文件”菜单下“新建”命令。弹出下列对话框。 2.选择Win32 Console Application项目,给项目起个名称如hello,并设置存放路径,点击确定后到以下图示: 3.选择一个空项目,点击确定。 4.再点击新建菜单项: 在弹出对话框中,选择文件选项,并选择C++ Source File,为文件起名并设置好文件路径: 5.这时,在打开代码编辑窗口里输入代码。 6.点击编译按钮和Build按钮并运行得到结果以下: 试验1:类定义和结构 1、定义一个描述学生通讯录类,数据组员包含:姓名、学校、电话号码和邮编;组员函数包含:输出各个数据组员值,分别设置和获取各个数据组员值。 编程提醒: (1)因为姓名、学校和电话号码数据长度是可变,可使用动态数据结构。邮编长度是固定,可定义一个字符数组来存放邮编。将数据组员均定义为私有。 (2)用一个组员函数输出全部组员数据,用一个组员函数完成初始化,用四个组员函数分别设置姓名、学校、电话号码和邮编,再用四个组员函数分别获取姓名、单位、电话号码和邮编。 (3)主函数完成简单测试工作。 类定义参考: class COMMU { private: char *pName; //姓名,数据组员为私有 char *pSchool; //单位 char *pNum; //电话号码 char Box[10]; //邮编 public: void Print(void) ; //输出数据组员 void Init(char *,char *,char *,char *); //完成初始化 void FreeSpace(void); //释放数据组员占用空间 void SetName(char *name); //置姓名 void SetScool(char *unit); //置学校名称 void SetNum(char *num); //置电话号码 void SetBox(char *mailnum) ; //置邮编 char *GetName(void); //取姓名 char *GetScool(void ); //取学校 char *GetNum(void); //取电话号码 char *GetBox(void) //取邮编 }; 2、将第一个上机试验题中组员函数Init改为结构函数,将组员函数FreeSpace改为析构函数。增加一个缺省结构函数,使指针pName,pSchool和pNum初值为0,使Box包含空字符串。 编程提醒: (1) 缺省结构函数完成数据组员初始化,依据试验题要求,该缺省结构函数能够是: COMMU() //缺省结构函数 { pName = pSchool = pNum =0; Box[0] = 0; } (2) 用结构函数COMMU替换组员函数Init功效,只要将函数名Init改为COMMU,即: COMMU(char *name,char *unit,char *num,char *b) { //重载结构函数 pName = new char [strlen(name)+1]; strcpy(pName,name); pSchool = new char [strlen(unit)+1]; strcpy(pSchool,unit); pNum = new char [strlen(num)+1]; strcpy(pNum,num); strcpy(Box,b); } (3) 用析构函数~COMMU替换组员函数FreeSpace,该析构函数为: ~COMMU( ) //析构函数 { if(pName) delete [] pName; if(pSchool) delete [] pSchool; if(pNum) delete [] pNum; } 3、定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形式表示,即24/36应该以2/3形式表示,并提供public组员函数实现以下功效: (1) 两个分数相加,结果表示为简化形式; (2) 两个分数相减,结果表示为简化形式; (3) 按a/b形式输出分数值,a、b为整数; (4) 按浮点数形式输出分数值 编程提醒: 完整程序参考代码: //Rational.h class Rational { public: Rational(int fz, int fm); void add(Rational &one); void sub(Rational &one); void print(); void outputAsFloat(); private: void simple(); int fenzi; int fenmu; }; //Rational.cpp #include "Rational.h" #include <iostream.h> #include <math.h> Rational::Rational(int fz, int fm) { fenzi = fz; if (fm != 0) fenmu = fm; else fenmu = 1; simple(); } void Rational::add(Rational & one) { int a, b; a = fenmu * one.fenmu; b = fenzi * one.fenmu + fenmu * one.fenzi; fenmu = a; fenzi = b; simple(); } void Rational::sub(Rational & one) { int a, b; a = fenmu * one.fenmu; b = fenzi * one.fenmu - fenmu * one.fenzi; fenmu = a; fenzi = b; simple(); } void Rational::print() { cout<<fenzi<<" / "<<fenmu<<endl; } void Rational::outputAsFloat() { float a = (float)fenzi/fenmu; cout<<a<<endl; } void Rational::simple() { for (int i = abs(fenzi); i > 1; i--) { if (abs(fenzi) % i == 0 && abs(fenmu) % i == 0) { fenzi = fenzi / i; fenmu = fenmu / i; } } } //main.cpp #include "Rational.h" main() { Rational a(24, 18), b(12, 36), c(6, 8); a.add(b); b.sub(c); a.print(); a.outputAsFloat(); b.print(); b.outputAsFloat(); return 0; } 试验2:堆和拷贝结构函数、静态组员和友元、运算符重载 1、建立一个Stock类,含有股票代码和股票现价两个数据组员。用new自动为Stock类对象分配内存,并将股票”600001”,现价8.89存入内存对应域中。在类中增加静态数据组员记载创建对象个数,增加拷贝结构函数并调用。 编程提醒: (1) 堆对象分配 Stock p; p=new Stock; (2) 堆对象释放 delete p; (3) 堆对象赋值 p->set(“600001”,8.89); (4) 拷贝结构函数 Stock(Stock &s); 思索:拷贝结构函数函数体应完成什么功效? (5) 静态数据组员 static int N_count; 思索:静态数据组员在程序中什么位置初始化?在程序中什么位置计数? 2、对以下圆柱类Column定义: class Column { public: Column(double x, double y, double r, double h); ~Column(); double area(); //求圆柱面积 double volume(); //求圆柱体积 private: double height; //高度 double radius; //半径 double x; //底面圆心x坐标 double y; //底面圆心y坐标 }; 要求: (1) 实现类Column中四个组员函数; (2) 增加一个友元函数,实现从键盘读取四个double类型数据对类Column对象进行赋值功效; (3) 增加一个友元函数,实现将类Column对象输出到屏幕功效,输出信息包含对象基础信息和对象面积和体积。 编程提醒: 友元函数申明: void friend set(Column &t); void friend print(Column &t); 3、对于下面定义类Test: class Test { private: int a; double b; }; 要求: (1) 为类Test每个数据组员增加一个set函数,并使这些set函数全部能够被连续调用; (2) 为类Test每个数据组员增加一个get函数。 (3) 假如要求全部get函数全部能够被连续调用,这些函数该怎样编写? 编程提醒: 要满足类对象能够连续调用其组员函数,这些组员函数返回值就必需是调用该函数对象本身,所以返回类型是该类型引用,返回值则是*this 4、定义一个复数类,经过重载运算符: *,/,直接实现二个复数之间乘除运算。编写一个完整程序,测试重载运算符正确性。要求乘法“*”用友元函数实现重载,除法“/”用组员函数实现重载。 编程提醒: (1) 两复数相乘计算公式为:(a+b i)*(c+d i)=(ac–bd )+(ad+bc) i (2) 两复数相除计算公式为:(a+b i)/(c+d i)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d) i (3) 复数类及运算符重载函数可定义为: class Complex{ float Real, Image; public: Complex(float r=0,float i=0) { Real=r;Image=i;} void Show() {cout <<"Real="<<Real<<'\t'<<"Image="<<Image<<'\n';} friend Complex operator *(Complex &, Complex &);//重载运算符* Complex operator /(Complex &); //重载运算- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 试验 参考 指导书
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文