《C++程序设计》实验指导书.doc_第1页
《C++程序设计》实验指导书.doc_第2页
《C++程序设计》实验指导书.doc_第3页
《C++程序设计》实验指导书.doc_第4页
《C++程序设计》实验指导书.doc_第5页
已阅读5页,还剩26页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 1实验名称:c+基础 学时:4一、实验目的1、熟练掌握Visual C+编写应用程序方法。2、熟练掌握Visual C+调试应用程序的方法。3、了解并掌握C+语言的特点,基本语法。4、能利用C+语言的基本知识编写程序,理解程序的结构。5、注重掌握函数重载、引用的使用、常量及指针的使用等。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000/xp 、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1、 编写一个函数,该函数能求出某个字符串的长度。然后再分别定义一个重载函数,能对整数求其长度,(即数值中的位数)。最后,编写主函数,并对以上两个函数的功能进行测试。#include #include using namespace std;void Len(char str)coutThe length of this String is strlen(str)0)m+;tmp=tmp/10;coutThe length of this Integer is mendl;int main()int a;char Str33;coutStra;Len(Str);Len(a);return 0;2、 编写一程序,实现九九乘法表的2种格式输出,格式如下:(1) 123456789 1 1 234567892 246810121416183 36.4 48.5 510.6 6.7 7.8 8.9 9.#include using namespace std; int main()int i=1,j=1;coutt1t2t3t4t5t6t7t8t9endl;cout-endl;for(i=1;i=9;i+)coutit;for(j=1;j=9;j+)couti*jt;coutn;return 0;(2) 123456789 11224336944812165510152025661218243036771421283542498816243240485664991827364554637281#include using namespace std;int main()int i=1,j=1;coutt1t2t3t4t5t6t7t8t9endl;cout-endl;for(i=1;i=9;i+)coutit;for(j=1;j=i;j+)couti*jt;coutn;return 0;(3) 将以上程序改为多文件结构,要求该工程中有3个.cpp文件,1个.h文件。/com.h#include using namespace std;void com()int i=1,j=1;coutt1t2t3t4t5t6t7t8t9endl;cout-endl;for(i=1;i=9;i+)coutit;for(j=1;j=i;j+)couti*jt;coutn;/half.h#include using namespace std;void half()int i=1,j=1;coutt1t2t3t4t5t6t7t8t9endl;cout-endl;for(i=1;i=9;i+)coutit;for(j=1;j=9;j+)couti*jt;coutn;/main.cpp#include com.h#include half.hint main()com();coutnnendl;half();return 0;六、实验步骤1、编写程序2、输入程序,记录调试情况七、实验报告及记录格式实验完成后提交实验报告,实验报告包括:封页(所有要求填写项,均要求填写完整),实验名称、实验目的、实验内容和结果分析、实验心得。按金陵科技学院实验报告(工科)格式填写实验报告。实验报告中记录Visual C+的调试过程,必须有完整的程序清单,程序中必须有适当的注释。八、实验注意事项1、输入程序时应严格注意大小写2、爱护机器,遵守规章制度九、讨论、思考题1、 Visual C+调试应用程序的方法2、 C与C+的异同3、 实验内容二的输出格式要求为上三角,如何实现?制订人: 李尤丰 (制订日期:2006年9月) 审订人: (审订日期:2006年 10 月)C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 2实验名称:类与对象 学时:4一、实验目的1、 掌握类和对象的概念、定义方法。2、 掌握成员函数的实现与调用方法。3、 深刻领会类与对象的区别。4、 理解类实现数据隐藏和封装的原理。5、 掌握类与对象的简单用法。6、 了解类指针、对象数组的用法。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000/xp 、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1、 定义一个Date类,包括year 、month、day三个数据成员,通过set_date成员函数输入出生日期数据,通过disp_date成员函数将其输出,并设计相应的程序进行测试。2、 定义一个类,输入若干学生的学号、姓名和成绩,然后显示这些数据并计算出平均分。并设计程序测试该功能。3、 用面向对象的程序设计方法实现堆栈的操作。(栈的大小为5)提示:程序包括:栈的大小定义为5;栈定义为一个类stack;栈的创建、进栈和出栈、栈的消亡;栈的使用进栈:void push(int n);出栈:int pop(void);4、将以上实验内容改为多文件结构实现。六、实验步骤1、编写程序2、输入程序,记录调试情况七、实验报告及记录格式实验完成后提交实验报告,实验报告包括:封页(所有要求填写项,均要求填写完整),实验名称、实验目的、实验内容和结果分析、实验心得。按金陵科技学院实验报告(工科)格式填写实验报告。实验报告中记录Visual C+的调试过程,必须有完整的程序清单,程序中必须有适当的注释。八、实验注意事项1、输入程序时应严格注意大小写2、爱护机器,遵守规章制度九、讨论、思考题1、类是一种数据类型吗?2、不同对象的使用和某个类相关还是只和一个类相关?3、本实验内容体现了面向对象的什么特点?4、 类的定义与实现用多文件结构实现有必要么?为什么?制订人: 李尤丰 (制订日期:2006年9月) 审订人: (审订日期:2006年 10 月)C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 3实验名称:构造函数和析构函数 学时:4一、实验目的1、掌握类的构造函数的定义方法。2、掌握构造函数的重载3、掌握析构函数的定义方法。4、掌握对象数据的初始化方法。5、理解构造函数和析构函数被调用的时间和特点以及他们在程序中的作用。6、理解类与对象的区别、类实现数据隐藏与封装的原理。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000/xp 、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1、 写一段代码说明构造函数和析构函数何时被调用,并进行测试。2、 以下是产品类Product的定义,但没有类的实现部分,请根据类的定义完整程序。class Productprivate: char * name;/产品名称 int price;/产品单价 int quantity;/产品剩余量public: Product(char* a,int b,int c); void purchase(int money);/购买产品 void remain();/显示剩余产品数量 Product();;3、编程题(有余力同学做)有16个数1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,已按由小到大的顺序排列,存于数组a中,试建立一个类ARR,完成将其中相同的数删得只剩下一个,经删除后,a数组中的内容为1,2,3,4,5,6,7,8,9,10,具体要求如下:1 私有数据成员(1) int n;数组实际元素个数。(2) int *a;存放原始数组及结果数组。2 公有成员函数(1) ARR(int x,int size):构造函数,用参数size 初始化n,用参数数组 x初始化a数组。(2) void delsame();完成将数组a中相同元素的删除工作。(3) void show();完成将结果数组以每行5个元素的形式输出到屏幕上。(4) ARP(ARP&);实现深拷贝构造函数。(5) ARP();实现析构函数。在主程序中定义数组int b16,其初值是1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,定义一个ARR类的对象v,用b及数组元素的个数初始化该对象,定义一个ARR类的对象u,用v初始化该对象,然后按要求完成对该类的测试。六、实验步骤1、编写程序2、输入程序,记录调试情况七、实验报告及记录格式实验完成后提交实验报告,实验报告包括:封页(所有要求填写项,均要求填写完整),实验名称、实验目的、实验内容和结果分析、实验心得。按金陵科技学院实验报告(工科)格式填写实验报告。实验报告中记录Visual C+的调试过程,必须有完整的程序清单,程序中必须有适当的注释。八、实验注意事项1、输入程序时应严格注意大小写2、爱护机器,遵守规章制度九、讨论、思考题1、类1的对象作为类2的数据成员,此时构造函数如何被调用?2、构造函数和析构函数必须成对出现吗?3、改错题(有余力同学做)用筛选法求2200以内的素数,算法为:1)定义一个一维数组a,其初值为3,5,7,9,199,即存放200以内所有大于1的奇数,共有99个元素,2)对每一个元素ai(i=0,1,97),若ai不等于0,则从其后一个元素开始,凡是ai的倍数的数值元素均不是素数(应置为0)3)最终数组a中的值不为0的元素均为素数。以下程序求出2200以内的素数,并每行输出10个素数,最后输出素数的个数。程序正确的运行结果为:5 7 11 13 17 19 23 29 31#include #include void main()int a99,i,j;for(i=0;i99;i+)ai=2i+1;for(i=0;i98;i+)if(ai!=0)for(j=j+1;j99;j+)if(aj&(aj%ai=0)aj=0;int count=0;for(int i=0;i99;i+)if(ai=0)coutsetw(5)ai;count+;if(count%10=0)coutendl;coutendlcount=countendl;制订人: 李尤丰 (制订日期:2006年9月) 审订人: (审订日期:2006年 10 月)C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 4实验名称:继承和多重继承 学时:6一、实验目的1、 掌握利用单继承和多重继承的方式定义派生类的方法。2、 理解在各种继承方式下构造函数和析构函数的执行顺序。3、 理解和掌握public、protected、private对基类成员的访问机制。4、 掌握虚函数的定义方法,以及在实现多态性中的作用。5、 理解掌握实现动态多态性的前提条件。6、 理解静态多态性和动态多态性的区别。7、 理解虚基类的概念。8、 理解引入虚基类的目的和作用。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000/xp 、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1、分析以下程序的执行结果#includeclass Basepublic:Base() cout”执行基类构造函数”endl;Base() cout”执行基类析构函数”endl;class Derive():public Basepublic:Derive() cout”执行派生类构造函数”endl;Derive() cout”执行派生类析构函数”endl;viod main()Derive d;2、分析以下程序的执行结果#includeclass Basepublic:Base() cout”基类构造函数”endl;Base() cout”基类析构函数”endl;class Derive:public Basepublic:Derive() cout”派生类构造函数”endl;Derive() cout”派生类析构函数”endl;viod main()Derive *p=new Derive;Delete p;3、 求一个三角形物体的面积,同时求一个圆形物体的面积。#include using namespace std;class areapublic:double triangle(int l,int h)return l*h/2;double circle(int r)return r*r*3.14; int main()area a;cout三角形:a.triangle(1,2)endl;cout圆形::a.circle(2)endl;4、 一个三口之家,大家知道父亲会开车,母亲会唱歌。但其父亲还会修电视机,只有家里人知道。小孩既会开车又会唱歌,甚至也会修电视机。母亲瞒着任何人在外面做小工以补贴家用。此外小孩还会大乒乓球。编写程序,然这三口之家从事一天的活动:先是父亲出去开车,然后母亲出去工作(唱歌),母亲下班后去做两个小时的小工。小孩在俱乐部打球,在父亲回家后,开车玩,后又高兴地唱歌。晚上,小孩和父亲一起修电视机。后来,父亲修电视机的技术让大家知道了,人们经常上门要他修电视机。这时,程序如何改动?#include using namespace std;class familypublic:void allknow()coutfather can driveendl;coutmother can singendl;void fknow()coutfather and son fix TVendl;class father:public familypublic:void drive()coutfather dirveendl;class mother:public familypublic:void sing()coutmother singendl;void pubwork()workother();private:void workother()coutmother work two hoursendl;class son:public familypublic:void drive()coutson dirveendl;void sing()coutson singendl;void play()coutplay table-tennisendl;int main()father f;mother m;son s;f.drive();m.sing();m.pubwork();s.play();coutafter fahter go homeendl;s.drive();s.sing();f.fknow();return 0;六、实验步骤1、编写程序2、输入程序,记录调试情况七、实验报告及记录格式实验完成后提交实验报告,实验报告包括:封页(所有要求填写项,均要求填写完整),实验名称、实验目的、实验内容和结果分析、实验心得。按金陵科技学院实验报告(工科)格式填写实验报告。实验报告中记录Visual C+的调试过程,必须有完整的程序清单,程序中必须有适当的注释。八、实验注意事项1、输入程序时应严格注意大小写2、爱护机器,遵守规章制度九、讨论、思考题1、多重继承是一个从一个基类派生多个子类,还是一个子类是从多个基类中派生出来的?2、什么时候要用虚基类?3、 什么时候要用虚函数?4、 两种多态性的区别5、 派生类构造与析构的顺序制订人: 李尤丰 (制订日期:2006年9月) 审订人: (审订日期:2006年 10 月)C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 5实验名称:静态成员与友元 学时:4一、实验目的1、 掌握类中静态成员的定义方法。2、 掌握静态数据成员初始化的方法。3、 掌握静态数据成员和静态函数成员的访问和使用方法。4、 掌握友元函数的定义和使用方法。5、 了解友元类的使用方法。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000 、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1、测试下列程序:#include#includeclass Student public: Student(char* pName =no name) cout create one studentn; strncpy(name, pName,40); name39=0; noOfStudents+; /静态成员:每创建一个对象,学生人数增1 cout noOfStudents endl; Student() cout destruct one studentn; noOfStudents-;/每析构一个对象,学生人数减1 cout noOfStudents endl; static int number() /静态成员函数 return noOfStudents; protected:static int noOfStudents;/若写成noOfStudents=0;则非法char name40;int Student:noOfStudents =0;/静态数据成员在类外分配空间和初始化void fn()Student s1; Student s2; cout Student:number() endl;/调用静态成员函数用类名引导void main()fn(); cout Student:number() endl; /调用静态成员函数用类名引导 2、测试下列程序#include #include using namespace std;class Student public: Student(char* pName); Student();static Student* findname(char* pName);protected: static Student* pFirst; Student* pNext; char name40;Student* Student:pFirst = 0; /静态成员空间分配及初始化Student:Student(char* pName) strncpy(name,pName, sizeof(name); namesizeof(name)-1=0; pNext=pFirst; pFirst=this;Student:Student() if(pFirst=this) pFirst=pNext; return; for(Student* pS=pFirst; pS; pS=pS-pNext)if(pS-pNext=this)pS-pNext=pNext;return;Student* Student:findname(char* pName)for(Student* pS=pFirst; pS; pS=pS-pNext)if(strcmp(pS-name,pName)=0) return pS;return (Student*)0;void main() Student s1(Randy); Student s2(Jenny); Student s3(Kinsey); Student* pS =Student:findname(Jenny); if(pS) coutok.endl; else coutno find.endl;3、测试下列程序#include class Vector public: Vector(int); Vector() deletev; /将堆中数组空间返还 Vector(Vector & ); void Display();int& Elem(int); /返回向量元素 friend VectorMultiply(Matrix &m,Vector &v);protected:int* v;/指向一个数组,表示向量int sz;/元素个数;Vector:Vector(int s)if(s=0)cerrbad Vector size.n;exit(1);sz=s;v =new ints;/从堆中分配一个数组存放向量元素int& Vector:Elem(int i) /引用返回的目的是返回值可以作左值 if(i0|sz=i)cerr Vector index out of range.n;exit(1);return vi;Vector:Vector(Vector& vec)v = new intsz=vec.sz;memcpy(void*)v,(void*)vec.v,sz*sizeof(int);void Vector:Display()for(int i=0; isz; i+)cout vi ;cout endl;class Matrixpublic:Matrix(int,int);Matrix()deletem;int &Elem(int,int);friend VectorMultiply(Matrix& m,Vector& v);protected: int *m; int szl;/矩阵行数 int szr;/矩阵列数;Matrix:Matrix(int i,int j) if(i=0|j=0) cerr bad Matrix size.n; exit(1); szl=i; szr=j; m =new inti*j;Matrix:Matrix(Matrix& mat)szl=mat.szl;szr=mat.szr;m=new intszl*szr;memcpy(void*)m,(void*)mat.m, szl*szr*sizeof(int);int& Matrix:Elem(int i,int j)/引用返回的目的是返回值可以作左值if(i0|szl=i|j0|szr=j)cerr Matrix index out of range.n;exit(1);return mi*szr+j;VectorMultiply(Matrix&m,Vector&v)/友元定义 if(m.szr!=v.sz) /直接访问保护数据 cerrbadmultiplying MatrixwithVector.;exit(1);Vector r(m.sz1);/直接访问保护数据for(int i=0;im.sz1;i+)/直接访问保护数据r.Vi=0;/直接访问保护数据for(int j=0;jm.szr;j+)/直接访问保护数据r.Vi+=m.mi*m.szr+j*v.vj;/直接访问保护数据return r;void main()Matrix ma(4,3);/4x3矩阵 ma.Elem(0,0)=1;ma.Elem(0,1)=2;ma.Elem(0,2)=3; ma.Elem(1,0)=0;ma.Elem(1,1)=1;ma.Elem(1,2)=2; ma.Elem(2,0)=1;ma.Elem(2,1)=1;ma.Elem(2,2)=3; ma.Elem(3,0)=1;ma.Elem(3,1)=2;ma.Elem(3,2)=1; Vector ve(3); /3x1向量 ve.Elem(0)=2; ve.Elem(1)=1; ve.Elem(2)=0; Vector va =VectorMultiply(ma,ve); va.Display();六、实验步骤1、输入调试程序,记录调试情况七、实验报告及记录格式记录Visual C+的调试过程,实验报告中必须有完整的程序清单,程序中必须有适当的注释。按金陵科技学院实验报告(工科)格式填写实验报告。八、实验注意事项1. 输入程序时应严格注意大小写2. 爱护机器,遵守规章制度九、讨论、思考题1、为什么静态成员函数不能访问普通成员?2、友元与成员的关系?制订人: 李尤丰 (制订日期:2006年9月) 审订人: (审订日期:2005年 10 月)C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 6实验名称:运算符重载 学时:2一、实验目的1、 理解运算符重载的概念和实质。2、 掌握运算符重载函数的定义方法。3、 掌握运算符重载为类的成员函数和友元函数的方法。4、 掌握几种常用运算符的重载,来解决问题。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000 /xp、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1、 测试下列程序#include class complex private:double real;double image; public:complex() real=0.0;image=0.0; complex(double rv,double iv) real=rv;image=iv; complex()void display()if(image0) coutreal+imageiendl; else if(image0) coutreal-imageiendl; complex operator+(complex& c2); friend complex operator-(complex& c1,complex& c2);complex complex:operator +(complex& c1,complex& c2)complex temp;temp.real=c1.real+c2.real;temp.image=c1.image+c2.image;return temp;complex operator -(complex& c1,complex& c2) complex temp;temp.real=c1.real-c2.real;temp.image=c1.image-c2.image;return temp;void main() complex a(2,5),b(7,8),c(0,0);c=a+b;c.display();c=complex(4,1)+a;c.display();c=b-complex(5,6);c.display();2、赋值运算符重载:对任何类,像拷贝构造函数一样,C+也默认提供赋值运算符,但要区别拷贝构造函数和赋值运算符:void fn(MyClass& mc)MyClass newMC=mc;/这是拷贝构造函数newMC=mc;/这是赋值运算符当拷贝构造函数执行时,newMC对象还不存在,拷贝构造函数起初始化的作用。当赋值运算符在newMC上执行时,它已经是一个MyClass对象。 #include #include class Name public:Name() pName = 0; Name(char* pn) copyName(pn); Name(Name& s)copyName(s.pName);/拷贝构造Name() deleteName(); Name & operator =(Name & s)/赋值运算符 deleteName(); copyName(s.pName); return *this;void display() cout pName endl; protected:void copyName(char* pN);void deleteName();char* pName;void Name:copyName(char* pN)pName = new charstrlen(pN) + 1;if(pName) strcpy(pName, pN);void Name:deleteName()if(pName)delete pName;pName = 0; void main() Name s(claudette);Name t(temporary);t.display();t = s; /赋值t.display();六、实验步骤1. 编写程序2. 输入调试程序,记录调试情况七、实验报告及记录格式记录Visual C+的调试过程,实验报告中必须有完整的程序清单,程序中必须有适当的注释。按金陵科技学院实验报告(工科)格式填写实验报告。八、实验注意事项1. 输入程序时应严格注意大小写2. 爱护机器,遵守规章制度九、讨论、思考题1、运算符重载成员函数与友元形式2、赋值运算符与拷贝构造函数区别制订人: 李尤丰 (制订日期:2006年9月) 审订人: (审订日期:2006年 10 月)C+程序设计实验指导书Competency Training of C+ Programming课程序号: 课程编号:适用专业:05计算机应用技术 实验序号: 7实验名称:流、模板、异常的使用(课后有余力同学完成) 学时:4一、实验目的1. 熟练掌握Visual C+编写应用程序方法。2. 熟练掌握Visual C+调试应用程序的方法。3. 了解并掌握C+语言的特点,基本语法。4. 熟练掌握流、模板、异常的使用。二、实验要求按照实验题目的要求,编写程序并上机调试三、实验设备计算机、Windows 2000 、Visual C+ 6.0四、实验原理、方法上机操作使用Visual C+输入并调试程序五、实验内容1. 文件流类定义的操作应用于外部设备,最典型的设备是磁盘中的文件。要定义一个文件流类对象,须规定文件名和打开方式。类ofstrea

温馨提示

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

评论

0/150

提交评论