




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
许昌学院计算机科学与技术学院面向对象C+程序设计课程实验教学手册创新源于实践面向对象C+程序设计课程实验教学手册姓 名: 刘艳敏 学 号: 1108110101 专 业: 数字媒体技术 班 级: 11 级 数字媒体 班任课教师: 李梅莲 时 间: 年 月 日综合成绩: 许昌学院计算机科学与技术学院制 许昌学院计算机科学与技术学院面向对象C+程序设计课程实验手册实验手册使用及要求实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。现将实验报告撰写的有关内容说明如下:1、 预习报告必须在实验前完成。2、 实验前按实验要求手写程序或程序填空,并走查代码,有疑问处标记,上机时在C+集成开发环境下输入并调试手写程序,分析运行结果,如实填写实验过程及实验中存在的问题及解决办法。3、 实验结束后填写通过后的源程序和对实验的总结。4、 通过后的源程序可以手写也可以打印粘贴。5、 实验位置填写应为:实验室编号.如:107。实验情况一览表序 号实验项目实验性质学 时实验一C+基础练习设计性2实验二C+简单程序设计设计性2实验三类与对象(一) 设计性4实验四类与对象(二)设计性4实验五运算符重载设计性4实验六派生与继承设计性4实验七虚函数与多态性设计性4实验八输入输出格式设计性2实验九文件设计性4实验十综合实验综合性6实验一实验名称:c+基础练习 、实验性质: 设计性 、 学时数: 2 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 熟悉使用Visual C+ 或Turboc 3.0等集成开发环境编写和实现C+程序过程2. 掌握C+程序的基本格式与规范3. 熟悉C+基本的输入输出操作4. 理解作用域运算符的概念与基本使用方法5. new和delete运算符二、实验要求实验前预习教材第1章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:编写一个简单程序,输出“Welcome you”,并给程序加一行注释“Fisrt c+ program”。实验中遇到的问题及解决方法:实验结果#include void main()1) 2) ;设计源程序2:编写一个程序,对一个整数数组求和,求和的结果使用全局变量sum存储,同时对整数中的奇数求和,结果使用局部变量sum存储,在主程序将两个结果输出。本题要求体会和理解作用域运算符的概念与基本使用方法。#include int a=1,2,3,4,5,6,7,8,9,10;int sum;void main() int i;实验中遇到的问题及解决方法:实验结果int sum=0;for (i=0;i10;i+) if (ai%2!=0) (1) ;(2) ; cout” sum of all is:” sum; cout” sum of odd is:”sum;设计源程序3:编写一个完整的包含输入和输出的简单C+程序。#include 实验中遇到的问题及解决方法:实验结果void main()设计源程序4:编写一个程序动态分配一个浮点空间,输入一个数到该空间中,计算以该数为半径的圆的面积并在屏幕上显示,最后释放该空间,请使用new,delete运算符。实验中遇到的问题及解决方法:实验结果#includevoid main() double *r; (1) ;cin*r;cout”Area is:” (2) ;(3) ;六、实验总结:实验二实验名称:c+简单程序设计练习 、实验性质: 设计性 、 学时数: 2 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 进一步熟悉在所用系统上编辑、编译、连接和运行C+程序的方法2. 掌握C+分支、循环语句的用法3. 掌握简单的指针操作方式4. 掌握C+内存的动态分配与释放方法5. 掌握函数模板及其声明方法。二、实验要求实验前预习教材第1章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题,熟悉常见错误提示信息,熟悉单步调试。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:编程求3100之间的所有素数。实验中遇到的问题及解决方法:实验结果设计源程序2:输入10个整数,从小到大排列并输出。(选择排序或者冒泡排序均可)实验中遇到的问题及解决方法:实验结果程序填空:设计源程序3:读入9个双精度的数,把他们存放在一个存储块里,然后求出它们的积。使用动态分配和指针操作。# include const int SIZE=9; double*init() return new double SIZE; void readin(double *a) /从a指向的存储单元开始读 int i; coutnplealse enter SIZE value : ; for (i=0;i=0;*result*=*(arr+size); /乘积的结果放入result指向的存储单元 void main( )实验中遇到的问题及解决方法:实验结果 double *x,res,*init(); if (x=init()=NULL) return; (2) ; product(x,SIZE,&res); coutThe product is : resendl; (3) ;设计源程序4:定义函数模板实现对不同数据类型数组冒泡排序。在下面横线上定义模板类型T,将冒泡程序代码填写在下面的方框中1. #include void bubble(T *array,int size)void main( )int A5=45,56,89,23,48;bubble(A,5);for(int i=0;i5;i+)cout Ai;coutendl;实验中遇到的问题及解决方法:实验结果六、实验总结:实验三实验名称:类与对象(一) 、实验性质: 设计性 学时数: 4 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 掌握类、类的数据成员、类的成员函数的定义方式2. 理解类成员的访问控制方式3. 掌握对象的定义和操作对象的方法4. 理解构造函数和析构函数的定义与执行过程5. 掌握重载构造函数的方法6. 类声明和成员函数定义的分离二、实验要求实验前预习教材第2章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:声明一个时间类,时间类中有3个私有数据成(hour,minute,second)和两个公有成员函数(setTime和printTime),setTime根据传递的个参数为对象设置时间;printTime负责将对象表示的时间显示输出。在主函数中,建立一个时间类的对象,设置时间为点分秒并显示该时间。程序填空: #include using namespace std;class Timepublic:void setTime(int c,int m,int s)clock=c;minute=m;second=s;存在的问题及解决方法:实验结果:void printTime()coutclock:minute:secondendl; private:int clock,minute,second;void main()Time time1;(1) ; (2) ;设计源程序2:.使用构造函数代替上面的settime成员函数,并在主函数中使用构造函数设置时间为点分秒,并显示该时间。#include 存在的问题及解决方法:实验结果:using namespace std; class Timepublic:Time(int c,int m,int s) (1) ; (2) ; (3) ;void print_Time()coutclock:minute:secondendl;private:int clock,minute,second;void main()Time time1( (4) );time1.print_Time();.重载时间类的构造函数(不带参数)使小时,分,秒均为。存在的问题及解决方法:实验结果:.在时间类的析构函数中输出“Goodbye!”存在的问题及解决方法:实验结果:5. 综合以上程序1至程序4,声明一个完善的时间类,时间类中有时、分、秒3个私有数据成员、两个公有成员函数(setTime和print_time)、带参数和不带参数两个构造函数及一个析构函数。在主函数中,定义三个时间类的对象,分别采用setTime、带参构造、不带参构造来为其设置时间并显示各对象时间。 此题要求类的定义与实现分离,即采用多文件编程方法。存在的问题及解决方法:实验结果:六、实验总结:实验四实验名称:类与对象(二) 、实验性质: 设计性 、设计性 学时数: 4 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 掌握对象数组定义与使用方法2. 理解对象指针的概念,学会使用指针引用对象3. 了解this指针的工作方式4. 掌握静态数据成员和静态成员函数的基本使用方法5. 理解友元与友元函数的作用,掌握其使用方法6. 熟悉类模板的声明与使用方法二、实验要求实验前预习教材第3章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:使用股票类stock, 在主函数中定义一个对象数组存放连续5个交易日的股票信息。编写一个add函数,根据两个stock对象(前后两日)的当日收盘价,计算当日涨幅。用指针引用对象数组中的两个对象。在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。#include iostreamusing namespace std;const int N=5;class Stockpublic: Stock() ; Stock(int n,float ma,float mi,float b,float e); void Set_Stock(int n,float ma,float mi,float b,float e); void Set_Stock(); float Get_End(); void Show_Stock();private:int Number;float Max,Min,Begin,End;存在的问题及解决方法:实验结果:;Stock:Stock(int n,float ma,float mi,float b,float e) Number=n; Max=ma; Min=mi; Begin=b;End=e;void Stock:Set_Stock(int n,float ma,float mi,float b,float e) Number=n; Max=ma; Min=mi; Begin=b; End=e; float Stock:Get_End() return End;void Stock:Show_Stock() cout编号:Numbert; cout最高盘价:Maxt; cout最低盘价:Mint; cout开盘价:Begint; cout收盘价:Endn;void Stock:Set_Stock() coutNumber; coutMax; coutMin; coutBegin; coutEnd;/编写主函数:/编写add函数: (提示:公式 (今天收盘价-昨天收盘价)/昨天收盘价*100%)float add(Stock &p1,Stock &p2)设计源程序2:在stock类中定义一个静态数据成员,记录当前stock对象的数量。#include iostreamusing namespace std;const int N=2;class Stockpublic: Stock() N_count+; Stock(int n,float ma,float mi,float b,float e); void Set_Stock(int n,float ma,float mi,float b,float e); void Set_Stock(); float Get_End(); void Show_Stock(); static int Get_N_count();private:static int N_count;int Number;float Max,Min,Begin,End;int Stock:N_count=0;Stock:Stock(int n,float ma,float mi,float b,float e) N_count+; Number=n; Max=ma; Min=mi; Begin=b;End=e;void Stock:Set_Stock(int n,float ma,float mi,float b,float e) Number=n; Max=ma; Min=mi; Begin=b; End=e; float Stock:Get_End() return End;void Stock:Show_Stock() cout编号:Numbert; cout最高盘价:Maxt; cout最低盘价:Mint; cout开盘价:Begint; cout收盘价:Endn;void Stock:Set_Stock() coutNumber; coutMax; coutMin; coutBegin; coutEnd;存在的问题及解决方法:实验结果:int Stock:Get_N_count() return N_count;编写主函数代码:设计源程序3:设计一个成员函数Assign_Stock为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_Stock赋值的对象。#include iostreamusing namespace std;class Stock public: Stock() ; Stock(int n,float ma,float mi,float b,float e); void Set_Stock(int n,float ma,float mi,float b,float e); void Set_Stock(); float Get_End(); void Show_Stock(); void Assign_Stock(Stock& p);private:int Number;float Max,Min,Begin,End;Stock:Stock(int n,float ma,float mi,float b,float e)Number=n; Max=ma; Min=mi; Begin=b;End=e;void Stock:Set_Stock(int n,float ma,float mi,float b,float e) Number=n; Max=ma; Min=mi; Begin=b; End=e; float Stock:Get_End() return End;void Stock:Show_Stock()cout编号:Numbert; cout最高盘价:Maxt; cout最低盘价:Mint; cout开盘价:Begint; cout收盘价:Endn;void Stock:Set_Stock() coutNumber;存在的问题及解决方法:实验结果: coutMax; coutMin; coutBegin; coutEnd;void Stock:Assign_Stock (Stock& p) if (this!=&p) Number=p.Number; Max=p.Max; Min=p.Min; Begin=p.Begin; End=p.End; 编写主函数代码:设计源程序4:定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。若是,返回真;否则,返回假。存在的问题及解决方法:实验结果:设计源程序4:定义类模板实现栈的基本操作,栈的数据结构用带表头结点的单向链表实现。存在的问题及解决方法:实验结果:设计源程序5:利用栈的类模板实现将输入的整数转换成八进制并输出。存在的问题及解决方法:实验结果:六、实验总结:实验五实验名称:运算符重载 、实验性质: 设计性 学时数: 4 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 了解运算符重载的概念和使用方法2. 掌握常用的双目、单目及流运算符重载方法二、实验要求实验前预习教材第4章,事先编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告1.运算符重载的一般格式为:函数类型 operator 运算符名称(形参对象)对运算符处理。2.函数类型 函数名()const表示常成员函数不能被修改只能被引用。3.运算符重载时既可以使用普通成员函数也可以使用友元函数。4.对双目运算符的重载使用普通成员函数可以,使用一个参数;若使用友元函数必须有两个参数,且至少有一个参数为类中对象。五、实验过程:设计源程序1:定义一个有理数Rational类,私有数据成员有分子、分母、构造函数有默认参数(分子默认为0,分母默认为1),重载比较运算符、=、=、!=。#include #include class Rationalpublic:Rational(int num=0,int denom=1);int operator(Rational r) const;int operator=(Rational r) const;int operator=(Rational r) const;int operator!=(Rational r) const;private:long num,den;Rational:Rational(int p,int q)1)_num=p_; 2)_den=q _ ; int Rational:operator (Rational r) constreturn num*r.denr.num*den;int Rational: operator=(Rational r) constreturn num*r.den=r.num*den;int Rational: operator!=(Rational r) constreturn num*r.den!=r.num*den;int Rational:operator =(Rational r) constreturn 3)_num*r.den=r,num*den_ ;void main()Rational a(4,5),b(8,5);if (ab)coutabendl;elsecoutbendl;实验中遇到的问题及解决方法:无实验结果设计源程序2:使用二目算术四则运算符+、-、*、/ 和单目求反运算符 - 实现有理数Rational类的算术运算操作。#include#includeclass Rationalpublic:Rational(int num=0,int denom=1);void display();将运算符的类型由int改为Rationalfriend int operator+(Rational&r1,Rational&r2);friend int operator-(Rational&r1,Rational&r2);friend int operator*(Rational&r1,Rational&r2);friend int operator/(Rational&r1,Rational&r2);private:long num,den;void Rational: display()coutnum/denendl;Rational:Rational(int p,int q)num=p;den=q;int operator+(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.den+r1.den*r2.num; r.den=r1.den*r2.den;将运算符的类型由int改为Rationalreturn r;int operator-(Rational&r1,Rational&r2)Rational r;将此处的if语句去掉r.num=r1.num*r2.den-r1.den*r2.num;if(r.num0)r.num=-r.num;r.den=r1.den*r2.den;return r;int operator*(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.num;r.den=r1.den*r2.den;return r;int operator/(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.den;r.den=r1.den*r2.num;return r;int main()Rational a(4,5),b(8,5),r3,r4,r5,r6;r4=a+b;r5=a-b;r6=a*b;r3=a/b;r3.display();r4.display();r5.display();r6.display();实验中遇到的问题及解决方法:问题:1.返回中不正确均为整数; 2.在进行减法运算时返回值均为正数。解决:1.将运算符重载时返回值类型改为Rational; 2.将减号运算符重载时的判断语句去掉。实验结果:设计源程序3:对有理数Rational 类,重载“”运算符。#include#includeclass Rationalpublic:Rational(int num=0,int denom=1);void display();friend Rational operator+(Rational&r1,Rational&r2);friend Rational operator-(Rational&r1,Rational&r2);friend Rational operator*(Rational&r1,Rational&r2);friend Rational operator/(Rational&r1,Rational&r2);friend ostream&operator(istream&,Rational&);private:long num,den;Rational:Rational(int p,int q)num=p;den=q;Rational operator+(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.den+r1.den*r2.num; r.den=r1.den*r2.den;return r;Rational operator-(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.den-r1.den*r2.num;if(r.num0)r.num=-r.num;r.den=r1.den*r2.den;return r;Rational operator*(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.num;r.den=r1.den*r2.den;return r;Rational operator/(Rational&r1,Rational&r2)Rational r;r.num=r1.num*r2.den;r.den=r1.den*r2.num;return r;ostream&operator(ostream&output,Rational&r)outputr.num/r.den(istream&input,Rational&r)cout请输入分子和分母:r.numr.den;coutr7;r4=a+b;r5=a-b;r6=a*b;r3=a/b;coutr3r4r5r6r7;实验中遇到的问题及解决方法:无实验结果:六、实验总结:1.运算符重载时要注意运算符的返回值类型,不要简单的定义为整形,要是情况而定;2.若没有定义流运算符重载时,要在类中定义一个输出函数,不能用cout直接输出;3.运算符重载时不要忘记加上ostream或istream;实验六实验名称:派生类与继承、实验性质: 设计性 、设计性 学时数: 4 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 理解类的继承的概念,能够定义和使用类的继承关系2. 掌握派生类的声明与定义方法3. 熟悉公有派生和私有派生的访问特性4. 学习虚基类在解决二义性问题中的作用二、实验要求实验前预习教材第5章,事先编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:定义一个基类MyArray,基类中可以存放一组整数,完善这个类并上机测试。class MyArraypublic:MyArray(int leng);MyArray();void Input();void Display();protected:int *alist;int length;基类中有构造函数、析构函数、输入数据和输出数据的函数。实验中遇到的问题及解决方法:实验结果设计源程序2:定义一个类SortArray继承自MyArray,在该类中定义函数实现排序功能。实验中遇到的问题及解决方法:实验结果设计源程序3:定义一个类ReArray继承自MyArray,在该类中定义函数实现逆转功能。实验中遇到的问题及解决方法:实验结果设计源程序4:定义一个类AverArray继承自MyArray,在该类中定义函数求解整数的平均值。实验中遇到的问题及解决方法:实验结果设计源程序5:定义类NewArray,同时继承了SortArray,ReArray和AverArray,使得类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。实验中遇到的问题及解决方法:实验结果六、实验总结:实验七实验名称:虚函数与多态性、实验性质: 设计性 、设计性 学时数: 4 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 理解静态多态性和动态多态性2. 掌握运算符重载的基本方法3. 掌握虚函数的定义与使用方法二、实验要求实验前预习教材第6章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。实验中遇到的问题及解决方法:实验结果设计源程序3:定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。#include #include class Animalpublic:Animal(char *n)name=new char 1)_;2)_;virtual void Identify();protected:char *name;void Animal:Identify()coutgeneric animalnameendl;class Cat:public Animalpublic:Cat(char *n):Animal(n)void Identify();void Cat:Identify()coutI am a cat callednameendl;class Dog:public Animalpublic:Dog(char *n):Animal(n)void Identify();void Dog:Identify()coutI am a dog callednameendl;void main()Cat cat(猫咪);cat. 3)_;Dog dog(虎子);dog. 4) ;实验中遇到的问题及解决方法:实验结果:设计源程序4:定义Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。实验中遇到的问题及解决方法:实验结果六、实验总结:实验八实验名称:输入输出格式的控制 、实验性质: 设计性 、 学时数: 2 、 实验位置: 、实验日期: 年 月 日、 指导教师: 一、实验目的1. 熟悉流及流类库的作用2. 熟练掌握流类库中常用的类及其成员函数的使用方法3. 掌握重载“”的方法4. 掌握控制输出宽度的函数width和setw5. 掌握函数setionsflags和resetonflags设置和恢复对齐方式、精度、大小写、进制等。二、实验要求实验前预习教材第7章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。三、实验所需器材与软件微型计算机 ; C+集成开发工具软件(VC+6.0、CFree、VS2005等)四、实验内容预习报告五、实验过程:设计源程序1:对Rational 类,重载“”.#include #includeclass Rational public :Rational(int num=0,int de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车载营销方案
- 少年儿童公园活动方案策划
- 至尊营销方案
- 阀门井堵漏防渗施工方案
- 聋儿认知能力提升策略-洞察及研究
- CRM在房产中介风险管理中的应用-洞察及研究
- 大数据驱动的咽痛诊断系统-洞察及研究
- 交通三类人员安全员c证题库及答案解析
- 东营古建施工方案设计
- 基于深度学习的复杂时序数据预测模型优化-洞察及研究
- 河北计算机单招数学试卷
- 脊髓微环境调控-洞察及研究
- 2025至2030全球及中国两轮组合仪表行业产业运行态势及投资规划深度研究报告
- 工业机器人讲课件
- 2025年屏山炒青茶市场分析报告
- 部编版三年级语文上册日积月累
- 第11章综合与实践低碳生活课件人教版七年级数学下册
- 税务师事务所管理制度
- 建设工程监理专业教学标准(高等职业教育专科)2025修订
- 心理治疗师考试试题及答案
- 兵团职工考试试题及答案
评论
0/150
提交评论