C程序设计实验指导书(第四版)

上传人:ren****ao 文档编号:142382350 上传时间:2022-08-25 格式:DOC 页数:28 大小:291.50KB
收藏 版权申诉 举报 下载
C程序设计实验指导书(第四版)_第1页
第1页 / 共28页
C程序设计实验指导书(第四版)_第2页
第2页 / 共28页
C程序设计实验指导书(第四版)_第3页
第3页 / 共28页
资源描述:

《C程序设计实验指导书(第四版)》由会员分享,可在线阅读,更多相关《C程序设计实验指导书(第四版)(28页珍藏版)》请在装配图网上搜索。

1、目 录实验一 熟悉Visual C+开发环境及上机过程1实验二 类的定义和对象的使用6实验三 多文件结构及静态成员和对象数组的使用7实验四 类的继承和派生9实验五 多继承11实验六 虚函数的使用13实验七 抽象类的使用16实验八 运算符重载和友元18实验九 STL的使用19实验十 STL的使用21实验十一 利用AppWizard向导生成Windows应用程序23实验一 熟悉Visual C+开发环境及上机过程一、实验目的1、 了解和使用VC集成开发环境;2、 熟悉VC环境的基本命令和功能键;3、 熟悉常用的功能菜单命令;4、 学习使用VC+环境的帮助;5、 学习完整的C+程序开发过程;6、 理

2、解简单的C+程序结构。二、实验内容 使用Visual C+ 6.0集成环境来编辑、编译并运行程序1:#include using namespace std;class TAddpublic: TAdd(int a,int b) x=a;y=b; coutconstructor.endl; coutx,yendl;TAdd() coutdestructor.endl; coutx,yendl;int add()return x+y;private: int x,y;int main()TAdd p1(3,4);coutx+y=p1.add()endl;TAdd p2(30,40); coutx

3、+y=p2.add()endl; return 0;三、实验步骤启动Visual C+ 6.0选择菜单“开始/程序/Microsoft Visual Studio 6.0/Microsoft Visual C+ 6.0”,启动后的用户界面如图1-1所示。图1-1 Visual C+ 6.0用户界面 1、创建新工程(1)单击菜单“文件/新建”,显示“新建:对话框,如图1-2所示。(2)在此对话框的列表栏中,选择“Win32 Console Application”(Win32控制台应用程序”)。在 “工程”栏中输入一个工程名,如实验一。在位置文本框中选择工程所在的路径,如图中所示H:C+实验实验

4、一。单击“确定”按钮。图1-2 “新建”对话框(3)在弹出的“Win32 Consol Application-Step 1 of 1” 对话框中选择An empty project单选项。然后单击“Finish”按钮,如图1-3所示。图1-3 “Win32 Consol Application-Step 1 of 1” 对话框(4)在“新建工程信息”对话框中单击“确认”按钮,完成工程创建过程。2、创建C+源程序文件(1)编辑C+源程序:编辑C+源程序时,选择“文件”菜单项,在弹出的子菜单中选择新建(热键为Ctrl+N),出现如图1-4所示的窗口。 图1-4 “新建”窗口(2) 选择“文件”选

5、项卡,在此属性页中选择“C+ Source File”,如图1-4所示,单击“确定”,出现如图1-5所示的编辑屏幕。图1-5 “C+”源程序编辑(3)在“C+源程序编辑”窗口下编辑C+源程序。在编辑窗口键入C+源程序。如图1-6所示,输入以下源程序:图1-6 编辑C+源程序3编译连接和运行源程序(1)选择菜单项“编译”,出现“编译”的下拉菜单,在该下拉式菜单中选择“编译 eg1-1.cpp”菜单项,这时系统开始对当前的源程序进行编译,在编译过程中,编译器会将错误信息显示在屏幕下方的“编译”窗口中。错误信息包括错误所在大致位置和错误的性质。用户可根据这些错误信息进行修改。上述程序的“编译”窗口,

6、如图1-7所示。图1-7 “编辑”窗口(2)编译无错误后,可进行连接生成可执行文件(.exe),这时选择“编译”下拉菜单中的“构件 eg1-1.exe”选项。“编译”窗口出现如图1-8所示的信息说明编译连接成功,并生成以源文件名为名字的可执行文件(eg1-1.exe)。图1-8 编译连接信息(3)执行可执行文件的方法是选择“编译”菜单项中“执行 eg1-1.exe”选项。这时,运行该可执行文件,并将结果显示在另外一个显示执行文件输出结果的窗口中,如图1-9所示。图1-9 运行C+程序结果4关闭工作区、打开工作区单击菜单“文件/关闭工作区”,关闭工作区。单击菜单“文件/打开工作区”,在弹出的对话

7、框中选定“H:C+实验实验一实验一.dsw”,单击“打开”按钮,则可打开工作区,对已建立的工程文件进行修改。5根据实验步骤14,建立、编译并运行实验程序1。四、实验要求1 复习教材有关内容。2 掌握VC控制台应用程序的开发、调试步骤。3 完成实验报告。实验二 类的定义和对象的使用一、实验目的 1、 掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2、 掌握类对象的定义;3、 理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4、 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数。二、

8、实验内容1、定义一个学生类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:(1)使用成员函数实现输入、输出;(2)使用构造函数和析构函数实现对数据的输入、输出;(3)编写主函数,定义对象,完成相应功能。2、定义日期类Date。要求:(1)可以设置日期;(2)日期加一天操作;(3)输出函数,输出格式为“XXXX年XX月XX日”;(4)编写主函数,定义对象,完成相应功能。三、实验要求1、 写出程序,并调试程序,要给出测试数据和实验结果。2、 整理上机步骤,总结经验和体会。3、 完成实验报告和上交程序。实验三 多文件结构及静态成员

9、和对象数组的使用一、实验目的1、掌握自定义头文件的方法;2、学会建立和调试多文件程序;3、了解静态成员的使用;4、掌握对象数组的使用。二、实验内容1、编写一个函数,求从n个不同的数中取r个数的所有选择的种数。要求:(1)将main()函数放在一个.cpp文件中;(2)将fn(int n) ,Cnr(int n, int r)放在另一个.cpp文件中;(3)将函数原型说明放在一个头文件中;(4)建立一个项目,将这三个文件加到你的项目中,编译连接使你的程序正常运行。2、上机调试例2-30,在Employee类中增加一个静态数据成员来设置本公司员工编号基数,新增加的员工编号将在创建对象的同时自动在基

10、数上增加。另外,将Employee类的声明部分和实现部分分成两个文件来实现。3、上机调试例3-14,假设有一个点类point,具有两个实数坐标。希望主程序使用这个类完成下述功能:(l)主程序为类point申请10个连续存储空间。(2)要求调用一个函数Set()从键盘输入10个对象的属性,并顺序存入申请的内存中。(3)要求调用一个函数Display()显示10个对象的值。(4)要求调用一个函数Lenth(),计算将这些点连成一条折线时,这条折线的长度。(5)程序结束时,删除申请的内存。(6)演示析构对象(动态对象或堆对象)的执行顺序。设计这个类和各个函数并验证运算结果的正确性。三、实验要求1、写

11、出程序,并调试程序,要给出测试数据和实验结果。2、整理上机步骤,总结经验和体会。3、完成实验报告和上交程序。 实验四 类的继承和派生一、实验目的1、 理解继承的含义,掌握派生类的定义方法和实现;2、 理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;3、 理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;4、 条件编译的运用。多文件结构的进一步使用。二、实验内容1、编写一个程序计算出球、圆柱和圆锥的表面积和体积。要求:(1)定义一个基类,至少含有一个数据成员半径,并设为保护成员;(2)定义基类的派

12、生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数;(3)编写主函数,求球、圆柱、圆锥的表面积和体积。2、编写一个学生和教师数据输入和显示程序。其中,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。要求:(1)将编号、姓名输入和显示设计成一个类person;(2)设计类person的派生类:学生类student和教师类teacher;(3)各个类的声明放在相应的头文件中(*.h),类的实现放在相应的实现文件中(*.cpp):person.h,person.cpp,student.h,student.cpp,teacher.h,teacher.cpp;(4)编写一个

13、主文件(SY4_2.cpp),在该文件中分别定义student、teacher的对象,完成相应功能。三、实验要求1、 写出程序,并调试程序,要给出测试数据和实验结果。2、 整理上机步骤,总结经验和体会。3、 完成实验报告和上交程序。实验五 多继承一、实验目的1、理解多继承的概念2、多继承中构造与析构的应用。二、实验内容1、输入以下程序,分析运行结果。#include using namespace std;class B1public:B1(int i)b1 = i;cout构造函数 B1.b1endl; void print() coutb1endl; private:int b1;clas

14、s B2public:B2(int i)b2 = i;cout构造函数 B2.b2endl; void print() coutb2endl;private:int b2;class B3public:B3(int i)b3 = i;cout构造函数 B3.b3endl; int getb3() return b3; private:int b3;class A : public B2, public B1public:A(int i, int j, int k, int l):B1(i), B2(j), bb(k)a = l;cout构造函数 A.aendl; void print()B1:

15、print();B2:print();coutaendl;private:int a;B3 bb;void main()A aa(1, 2, 3, 4);aa.print(); 2、修改上面的4个类,添加析构函数,在析构函数中输出各私有数据成员的值。并分析结果。三、实验要求1、 写出程序,并调试程序,要给出测试数据和实验结果。2、 整理上机步骤,总结经验和体会。3、 完成实验报告和上交程序。实验六 虚函数的使用一、实验目的1、理解多态的概念。2、理解函数的静态联编和动态联编。3、掌握虚函数的定义。4、理解虚函数在类的继承层次中的作用、虚函数的引入对程序运行时的影响,掌握其使用。 二、实验内容虚

16、函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行动态联编,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。多态指同一个方法根据其所属的不同对象可以有不同的行为。虚函数是C+中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数1、录入下面程序,并分析结果:#include #include using namespace std; class Base public: Base() coutBase-ctorendl; Base()

17、coutBase-dtorendl; virtual void f(int)coutBase:f(int)endl; virtual void f(double)coutBase:f(double)endl; virtual void g(int i=10)coutBase:g()iendl; ; class Derived : public Base public: Derived() coutDerived-ctor endl; Derived()coutDerived-dtorendl;void f(complex) coutDerived:f(complex)endl;void g(i

18、nt i=20)coutDerived:g()iendl; int main() coutsizeof(Base)endl; coutsizeof(Derived)f(1.0); b.g(); d.g(); pb-g(); delete pb; return 0; 2、录入下面程序,分析运行结果:#include using namespace std; class Base public: Base():data(count) coutBase-ctorendl;+count;Base()coutBase-dtorendl;-count; static int count; int data

19、; ;int Base:count; class Derived : public Basepublic:Derived():data(count),data1(data)coutDerived-ctorendl;+count;Derived()coutDerived-dtorendl;-count;static int count;int data1;int data;int Derived:count=10;int main()coutsizeof(Base)endl;coutsizeof(Derived)endl;Base* pb = new Derived3;coutpb2.datae

20、ndl;cout(static_cast(pb)+2)-data1endl;delete pb;coutBase:countendl;coutDerived:countendl;return 0; 三、实验要求1、 写出程序,并调试程序,要给出测试数据和实验结果。2、 整理上机步骤,总结经验和体会。3、 完成实验报告和上交程序。实验七 抽象类的使用一、实验目的 1、 了解抽象类的概念;2、 灵活应用抽象类。 二、实验内容1、录入下面程序,分析编译错误信息。#include #include #include using namespace std;class Abstractpublic: A

21、bstract() cout f(); return 0;2、基类shape类是一个表示形状的抽象类,area( )为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类(circles)、并给出具体的求面积函数。#includeclass shape public: virtual float area( )=0 ;;3、定义一个抽象类Base,在该类中定义一个纯需函数virtual void abstractMethod() = 0;在函数的实现中输出Base:abstractMethod is called.,派生一个基于Base的派生类Derived,在派生类Der

22、ived的abstractMethod方法中首先调用基类的abstractMethod方法,在输出Derived:abstractMethod is called,最后编写主函数,其内容如下:int main() Base* pBase = new Derived; pBase-abstractMethod(); delete pBase; return 0;分析运行结果。三、实验要求1、 写出程序,并调试程序,要给出测试数据和实验结果。2、 整理上机步骤,总结经验和体会。3、 完成实验报告和上交程序。实验八 运算符重载和友元一、实验目的 1、掌握运算符重载和友元的概念;2、掌握使用frien

23、d重载运算符的方法。二、实验内容1、设计一个类,用自己的成员函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。要求:(1)输出结果是最简分数(可以是带分数);(2)分母为1,只输出分子。2、用友元函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。三、实验要求1、写出程序,并调试程序,要给出测试数据和实验结果。2、整理上机步骤,总结经验和体会。3、完成实验报告和上交程序。实验九 模板的使用一、实验目的1、掌握C+中模板的概念,区分函数模板、模板函数与类模板和模板类的概念;2、掌握函数模板的声明和模板函数的生成,以及函数模板的异常处理;3、掌握类模板的定义和模板

24、类的使用。二、实验内容1、输入以下程序并运行、分析结果:(P239 6.7)#include template class myclasspublic:myclass(Type1 a, Type2 b)i=a;j=b;void show()couti jn;private: Type1 i;Type2 j;main()myclass ob1(10,0.23);myclass ob2(x,This is a test);ob1.show();ob2.show();return 0;2、指出下列程序中的错误,并说明原因,然后修改正确:(P240 6.8)#include template clas

25、s Stackpublic:Stack(int sz) v=p=new T size=sz;Stack() delete v ;void push(T x) * p+=x; T pop() return *-p; int siz() const return (p-v);private:T *v;T *p;int size;void main()Stack aSt(5);aSt.push(10);3、已知下列主函数,请定义取三个数之间较小者的函数模板,然后运行之:(P240 6.9)void main()coutmin(10,5,3)endl;coutmin(10.0,5.0,3.0)endl

26、;coutmin(a,b,c)endl;4、写一个函数模板,求数组中的最大元素,并且使得函灵敏调用时,数组的类型和返回类型可以是整数也可以是双精度类型。5、建立类模板input,在调用构造函时,完成以下工作:(1) 提示用户输入;(2) 让用户输入数据;(3) 如果数据不在预定义范围内,重新提示输入。input型的对象应当按以下形式定义: input ob(“promput message”,min_value,max_value)其中,promput message 是提示输入的信息。可接受的最小值和最大值分别由min_value与max_value指定。三、实验要求1、写出程序,并调试程序

27、,要给出测试数据和实验结果。2、整理上机步骤,总结经验和体会。3、完成实验报告和上交程序。实验十 STL的使用一、实验目的1、掌握VC中STL的使用方法;2、掌握容器(container)、模板(template)、游标(Iterator)、算法(Algorithms)、分配器(Allocator)、向量(vector)等知识的应用。二、实验内容1、vector向量的使用(目的:理解STL中的向量),输入以下程序并运行、分析结果。/ #include stdafx.h -如果使用预编译的头文件就包含这个头文件#include / STL向量的头文件。这里没有.h。#include / 包含co

28、ut对象的头文件。using namespace std;/保证在程序中可以使用std命名空间中的成员。char* szHW = Hello World; /这是一个字符数组,以”0”结束。int main(int argc, char* argv) vector vec; /声明一个字符向量vector (STL中的数组)/为字符数组定义一个游标iterator。vector :iterator vi;/初始化字符向量,对整个字符串进行循环,/用来把数据填放到字符向量中,直到遇到”0”时结束。char* cptr = szHW; / 将一个指针指向“Hello World”字符串while

29、(*cptr != 0) vec.push_back(*cptr);cptr+;/ push_back函数将数据放在向量的尾部。/ 将向量中的字符一个个地显示在控制台for (vi=vec.begin(); vi!=vec.end(); vi+)/ 这是STL循环的规范化的开始通常是 != , 而不是 / 因为 在一些容器中没有定义。 / begin()返回向量起始元素的游标(iterator),end()返回向量末尾元素的游标(iterator)。cout *vi; / 使用运算符 “*” 将数据从游标指针中提取出来。cout endl; / 换行return 0;2、容器和游标的使用,输入

30、以下程序,并调试、分析结果#pragma warning(disable:4786) #include #include #include using namespace std;typedef mapint, string, less INT2STRING;void main() INT2STRING theMap;INT2STRING:iterator theIterator;string theString = ;int index;theMap.insert(INT2STRING:value_type(0, Zero);theMap.insert(INT2STRING:value_ty

31、pe(1, One);theMap.insert(INT2STRING:value_type(2, Two);theMap.insert(INT2STRING:value_type(3, Three);theMap.insert(INT2STRING:value_type(4, Four);theMap.insert(INT2STRING:value_type(5, Five);theMap.insert(INT2STRING:value_type(6, Six);theMap.insert(INT2STRING:value_type(7, Seven);theMap.insert(INT2S

32、TRING:value_type(8, Eight);theMap.insert(INT2STRING:value_type(9, Nine);for (;)cout theString;if(theString = q)break; for(index = 0; index theString.length(); index+) theIterator = theMap.find(theStringindex - 0);if(theIterator != theMap.end() )cout (*theIterator).second ;else cout err ;cout TextOut(50,50,Hello, World);(5)按Ctrl+s或者选菜单File|Save来保存所作的修改。5、编译连接并运行重新编译连接该项目,运行程序,也可以用Ctrl+F5直接运行程序,系统将询问是否重新编译该项目,回答“是(Yes)”,如果有编译错误,仔细检查你加的一句话,是否有错。当编译连接通过后,系统会自动运行该程序。查看结果。四实验要求1、写出程序,并调试程序,要给出测试数据和实验结果。2、整理上机步骤,总结经验和体会。3、完成实验报告和上交程序。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!