1、实验 1 环境熟悉和类与对象1. 实验目的(1)熟悉上机环境,了解编译过程中常见的错误与解决办法。(2)学会编写简单的 C+程序并会用 debug 调试程序。(3)观察构造函数和析构函数的执行过程。(4)掌握动态内存分配的两个运算符的使用(5)掌握函数参数的三种传递方式。(6)学习利用友元求解问题。2. 实验内容(1) 定义一个学生类,学生信息有学号、姓名和成绩。成绩包括计算机、英语、数学成绩和平均分。要求利用队列实现学生的入队、出队和显示等功能。算法思路:定义一个类 Student,数据成员有:学生信息,进行入队、出队和显示操作的 front(队头)、rear(队尾)和 num(统计队列中元
2、素的个数),其中学生信息定义成结构体类型的数组;成员函数有学生的入队操作、出队操作和显示操作,通过构造函数对学生信息进行初始化。(2) 定义一个图书类,图书信息有图书名称、作者、出版社、价格。要求利用栈实现图书的入库、出库和显示等功能。算法思路:定义一个类 Stack,数据成员有:图书信息,进行入库、出库和显示操作的 top(栈顶指针),其中图书信息定义成结构体类型的数组;成员函数有图书的入库、出库和显示操作,通过构造函数对图书信息进行初始化。(3) 有 Distance 类和 Point 类,将 Distance 类定义为 Point 类的友元类来实现计算两点之间距离。实验 2 函数重载与内
3、联函数1. 实验目的(1) 掌握函数重载的应用。(2) 理解内联函数的作用,掌握内联函数的应用。2. 实验内容(1) 利用重载求两个整数、三个整数和四个整数的最小值。(2) 利用重载计算长方形、正方形、圆、梯形的面积。(3) 利用重载编写求整数绝对值和求实数绝对值。(4) 利用重载实现对 10 个整数和 10 个实数的排序。(5) 判断一个字符是否为数字字符,要求用内联函数实现。实验 3 常量与引用1. 实验目的(1) 理解常量的含义与#define 的区别。(2) 理解引用的含义与指针的区别。(3) 能够熟练掌握 const 的各种使用方法。(4) 能够熟练应用引用、掌握拷贝构造函数的使用方
4、法。2. 实验内容(1) 利用 const 定义整型常量、浮点型常量与字符型常量。(2) 使用 const 与指针结合,实现常指针与指针常量。(3) 使用 const 与函数结合,实现常参数与返回值为常数的函数。(4) 利用 const 定义常对象,实现常成员函数。(5) 分别利用引用与指针实现交换两个数值功能的函数,比较不同。实验 4 静态与命名控制1. 实验目的(1) 了解静态对象的定义和使用方法。(2) 掌握静态数据成员和静态成员函数的定义和使用方法。2. 实验内容(1)利用静态数据成员的概念,编写一个类,统计目前存在多少个该类的对象。提示:定义静态数据成员 count,用来统计对象数目
5、。(2)利用静态数据成员的概念,编写一个学生类,学生信息包括姓名、学号、成绩;统计学生的总人数及总成绩,并输出。提示:定义静态数据成员 total_num 和 total_score,分别用来统计学生的总人数及总成绩。(3) 定义一个 Dog 类,用静态数据成员 Dogs 记录 Dog 的个体数目,静态成员函数 GetDogs 用来存取 Dogs。设计并测试这个类。(4) 利用静态的概念,编写一个小猫类,统计并输出每个小猫的重量、小猫的总数量及总重量。实验 5 运算符重载1. 实验目的(1)掌握成员函数重载运算符。(2)掌握友元函数重载运算符。(3)理解类型转换的必要性,掌握类型转换的使用方法
6、。2. 实验内容(1)重载减法运算符,实现两个字符串相减。-=运算符重载函数:const classname /指向原字符串所占空间buffer=new charlength+1; /重新分配空间int i,j,k;i=0;j=0;k=0;while(iclass Arrayprivate:T aSIZE;public:Array();void sort();int find(T k);T sum();void Print();(2)编写一个一维数组,无论整型还是其他类型,可以进行相同的操作:插入、删除、查找某一元素、排序等功能。类模板的声明:const int MAXSIZE=10; tem
7、plateclass Arrayprivate:T aMAXSIZE;int last;public:Array();int Insert(int i,T x);int Del(int i);void Sort();int Find(T k);void Print();(3)用类模板实现将两个升序链表组成一个降序链表。数据元素可以是整型、实型。类模板的声明:const int Maxlen=15; template struct NodeT data;Node *next;templateclass LinkListprivate:Node *head1;Node *head2;Node *h
8、ead3;int n1,n2,n3;public:LinkList();void CreateLinkList(Node *h);void Merge();void Print_LinkList();(4)用类模板实现栈,功能有:判断栈是否为空、入栈、出栈、读栈顶元素。类模板的声明:const int MAXSIZE=100; templateclass Stackprivate:T dataMAXSIZE;int top; public:Stack();int Empty_SeqStack( );int Push_SeqStack(T x);T Pop_SeqStack();实验 8 输入/
9、输出流1. 实验目的(1) 了解 C+中输入/出流的架构与原理方法。(2) 熟练掌握常用的输入/出函数、格式化数据输入 /出方法。(3) 理解掌握用户自定义数据类型的输入/出。(4) 掌握顺序访问文件方式、随即访问文件方式。2. 实验内容(1) 输出九九乘法表,使用 setw()控制“= ”两边边的数值宽度,使得输出结果整齐。(2) 编写程序,用于统计某文本文件中的单词个数。(3) 编写程序,定义 in 为 istream 对象,定义 out 为 ostream 对象,从文件1 中读取数据写入到文件 2 中。实验 9 异常处理1. 实验目的(1) 了解异常处理的原理方法。(2) 熟练掌握异常处理的使用。(3) 理解掌握捕获各种异常。2. 实验内容(1) 编写程序,在函数中抛出异常,在主程序中调用函数,并进行异常处理。(2) 编写程序,再抛出异常处理。实验 10 综合实验1. 实验目的(1) 综合应用面向的程序设计方法。(2) 熟练掌握 Visual Studio C+ 2008 编程工具。2. 实验内容学习掌握课本第十二章的综合实例,在此基础上,实现图元的选取、拖动与排列。附录实验报告内容要求1实验名称2实验目的3实验内容4测试数据及预期结果5程序(要求要有注释)6源程序7实验结果分析