VC++课程设计~大量例题供你学习.doc_第1页
VC++课程设计~大量例题供你学习.doc_第2页
VC++课程设计~大量例题供你学习.doc_第3页
VC++课程设计~大量例题供你学习.doc_第4页
VC++课程设计~大量例题供你学习.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

江苏科技大学课程实践报告设计题目: 计算机程序设计实践(VC+)设计时间: 2011年3月学 院: 数理学院专业班级: 08405022学生姓名: 杨太君 学号:0840502222指导老师: 於跃成 2011年3月实践一基础题 第1题:一、实践任务试建立一个类PP,求出下列多项式的前n项的值。具体要求: (1)私有数据成员 int n:前若干项的项数。 double x:存放x的值。 double *p:根据n的大小动态申请存放前n项的数组空间。(2)公有成员函数 PP(int num,double x):构造函数,初始化数据成员n和x,使p指向动态申请的数组空间。 PP():析构函数,释放p指向的动态内存空间。 double fun(int n1,double x):递归函数,用于求多项式的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。 void process():完成求前n项的工作,并将它们存放到p指向的动态数组中。 void show():输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3)在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。二,程序设计 (1)程序功能分析 本程序主要使用递归法实现多项式的求解。(2)类的定义和描述。(3)编写源程序如下:#include #include class PPint n;double x;double *p;public:PP(int num,double x1)n=num;x=x1;p=new doublen;PP()if(p)delete p;double fun(int n1,double x)double p;if(n1=0) return 1;if(n1=1) return x;if(n11) p=(2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x)/n1; return p;void process()for(int i=0;in;i+)pi=fun(i,x);void show()coutntxendl;for(int i=0;in;i+)coutpit;if(i+1)%4=0) coutnumx1;coutendl;PP items(num,x1);cess();items.show();三,程序测试对类进行测试,测试数据为:8,3。输出结果:四,实验小结 此题的关键是用递归的方法的递归形式,通过此次实践,熟悉了类的基本构造,学会了用类来求解函数。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社 实践二基础题 第2题:一、实践任务试建立一个类SP,求,另有辅助函数power(m,n)用于求 具体要求如下: (1)私有数据成员 int n,k:存放公式n和k的值。(2)公有成员函数 SP(int n1,int k1):构造函数,初始化数据成员n和k. int power(int m,int n)求 int fun():求公式的累加和。 void show():输出求得的结果。(3)在主函数中定义对象s,对该类进行测试。二,程序设计 (1)程序功能分析 本程序主要使用递归法实现多项式的求和问题。(2)类的定义和描述。(3)编写源程序如下:#include class SP private:int n;int k;public:sp(int n1,int k1)n=n1;k=k1;int power(int m,int n)int a=1;for(int i=0;in;i+)a=a*m;return a;int fun()int y=0;for(int i=1;i=n;i+)y+=power(i,k);return y;void show()coutfun()nk;s.sp(n,k);s.fun();s.show();三,程序测试对类进行测试,测试数据为:3,5。输出结果:四,实验小结 此题的关键是用递归的方法的递归形式,通过此次实践,熟悉了类的基本构造,学会了用类来求解函数。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社2 祁云嵩、刘永良,华伟Visual c+程序设计解析训练 华东理工大学出版社3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社实践三基础题 第3题:一、实践任务建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员float array20:一维整型数组。 int n:数组中元素的个数。 (2)公有成员函数 MOVE(float b,int m):构造函数,初始化数据成员. void average():输出平均值,并将数组中的元素按要求重新放置。 void print():输出一维数组。(3)在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3对该类进行测试。二,程序设计 (1)程序功能分析 本程序主要掌握数组的平均值的求法,并熟悉将数组排序。 (2)类的定义和描述。 (3)编写源程序如下:#include class MOVE float array20;int n;public:MOVE(float b,int m)n=m;for(int i=0;in;i+)arrayi=bi;void average()float a=0;for(int i=0;in;i+)a+=arrayi;a/=n;coutaendl;for(int x=0,y=n;xa)arrayy+=arrayx;arrayx=0;for(int k=0,z=0;ky;k+)if(arrayk!=0)arrayz+=arrayk;coutendl;void print()for(int i=0;in;i+)coutarrayit;coutendl;void main()float b=1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3;MOVE arest(b,9);arest.average();arest.print();三,程序测试输出结果:四,实验小结 此题的关键是掌握数组的平均值的求法,并掌握数组排序的具体方法。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社实践四基础题 第4题:一、实践任务建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1)私有数据成员int *array:一维整型数组。 int n:数组中元素的个数。 (2)公有成员函数 MOVE(float b,int m):构造函数,初始化数据成员. void exchange():输出平均值,并将数组中的元素按要求重新放置。 void print():输出一维数组。 MOVE():析构函数。 (3)在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。二,程序设计(1)程序功能分析 本程序主要掌握如何对数组的元素进行比较,如何找到最大值和最小值以及对数组元素的交换。(2)类的定义和描述。(3)编写源程序如下:#include # include class MOVE int *array;int n;public:MOVE(int b,int m)n=m;array=new int n;for(int i=0;in;i+)arrayi=bi;void exchange()int c=0;for(int i=0;in;i+)c+=arrayi;c/=n;cout平均值是cendl;for(int max=0,min=0,j=0;jn;j+)if(arraymaxarrayj)min=j;c=arraymax;arraymax=arraymin;arraymin=c;void print()for(int i=0;in;i+)coutarrayit;MOVE()delete array;void main()int b=21,65,43,87,12,84,44,97,32,55;MOVE a(b,10);a.exchange();a.print();三,程序测试输出结果:四,实验小结 此题的关键是掌握对数组的元素进行比较,找到最大值和最小值以及对数组元素的交换。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社实践五基础题 第5题:一、实践任务定义一个类Palindrome,实现绝对回文数,设计一个算法实现对任意整型数字判断是否为回文数。所谓绝对回文数,是指十进制和二进制数均对称的数。具体要求如下: (1)私有数据成员 int n:整型数字。 int y:标记是否为回文数。 (2)公有成员函数 Palindrome(int x):构造函数,根据x参数初始化数据成员n,y初始化为0。 void huiwen():判断n是否为绝对回文数。 void show():若该数是回文数,则在屏幕上显示。(3)在主函程序中定义int a,由键盘输入数字。定义一个Palindrome类对象P,用a初始化p,完成对该类的测试。二,程序设计 (1)程序功能分析 本程序主要掌握如何对数组进行数值比较,如何判断一个数是十进制回文数以及二进制回文数。(2)类的定义和描述。(3)编写源程序如下:#include class Palindrome private:int n;int y;char *p;public:Palindrome(int x)n=x;y=0;p=new char20;void huiwen()int b,c,d=0;c=n;if(n0);if(d=n)int e;e=n;for(int i=0;e0;i+)pi=e%2;e/=2;i-;for(int j=0;ji)y=1;void show()if(y=0)coutn不是绝对回文数endl;else coutn是绝对回文数a;Palindrome p(a);p.huiwen();p.show();三,程序测试对类进行测试,测试数据为:121,313。输出结果:四,实验小结 此题的关键是掌握对数组进行数值比较,判断一个数是十进制回文数以及二进制回文数。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社 实践六基础题 第6题:一、实践任务定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。具体要求如下:(1)私有数据成员 int *str。 int y:标记是否为回文字符串。(2)公有成员函数 String(char *s):构造函数,用给定的参数s初始化数据成员str,y初始化为0。 void huiwen():判断str所指向的字符串是否为回文字符串。 void show():在屏幕上显示字符串。(3)在主程序中定义字符串char s=”ababcedbaba”作为原始字符串。定义一个Sring类对象test,用s初始化test,完成对该类的测试。二,程序设计 (1)程序功能分析 本程序主要掌握如何对字符数组进行字符比较,如何判断一个字符串是否是回文字符串。(2)类的定义和描述。(3)编写源程序如下:# includeclass Stringprivate:char *str;int y;public:String(char *s)str=s;y=0;void huiwen()int i=0,j=0;while(stri+);i-;i-;for(j;ji)y=1;void show()if(y=0)coutstr不是回文字符串endl;if(y)coutstr是回文字符串endl;void main()char s=ababcedbaba;char m=abcdedcba; /验证程序的正确性String test(s);test.huiwen();test.show();三,程序测试对类进行测试, 输出结果:四,实验小结 此题的关键是掌握对字符数组进行字符比较,判断一个字符串是否是回文字符串。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社实践七基础题 第7题:一、实践任务建立一个类PHALANX,生成并显示一个折叠方阵,折叠方阵如图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。 具体要求: (1)私有数据成员 int (*p)20:指向按照折叠规律存放的二维整型数组。 int startnum:折叠方阵的起始数。 int n:存放方阵的层数。(2)公有成员函数 PHALANX(int s,int m):构造函数,初始化成员数据。 void process():生成起始数为startnum的n行方阵。 void print():输出折叠方阵。 PHALANX():析构函数。 (3)在主程序中对该类进行测试。二,程序设计 (1)程序功能分析 本程序主要使用循环方法实现方阵的递增,主要注意循环条件的限制。(2)类的定义和描述。(3)编写源程序如下:#include class PHALANXprivate:int (*p)20;int startnum;int n;public:PHALANX(int s,int m)startnum=s;n=m;p=new intn20;void process()int i=0,j=0,k;k=startnum;k=k-1;pij=k+;for( j;jn;j+)for( i=0;i=0;j-)pij=k+;j=i;if(j=i)break;void print()for(int i=0;in;i+)for(int j=0;jn;j+)coutpijt;coutendl;PHALANX()delete p;void main()int b,c;coutb;coutc;PHALANX a(b,c);cess();a.print();三,程序测试对类进行测试,测试数据为:1,5。输出结果:四,实验小结 此题的关键是注意循环条件的限制。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社 实践八基础题 第8题:一、实践任务建立一个类MATRIX,生成并显示一个螺旋方阵,螺旋方阵如图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。 具体要求: (1)私有数据成员 int a2020:二维整型数组存放螺旋方阵。 int startnum:螺旋方阵的起始数。 int n:存放方阵的层数。(2)公有成员函数 MATRIX(int s,int m):构造函数,初始化成员数据startnum和n。 void process():生成起始数为startnum的n行螺旋方阵。 void print():输出螺旋方阵。(3)在主程序中定义MATRIX类的对象t对该类进行测试。二,程序设计 (1)程序功能分析 本程序主要使用循环方法实现方阵的递增,主要注意循环条件的限制,弄清楚具体的循环过程。(2)类的定义和描述。(3)编写源程序如下:#includeclass MATRIXint a2020;int startnum;int n;public:MATRIX(int s,int m)startnum=s;n=m;void process()int m=n;for(int i=0;im;m-,i+)for(int j=i;jm;j+)aij=startnum+;j-;for(int k=i+1;k=i;j-)akj=startnum+;for(k-,j+;ki;k-)akj=startnum+;void print()for(int i=0;in;i+)for(int j=0;jn;j+)coutaijt;coutendl;void main()int s,m;couts;coutm;MATRIX t(s,m);cess();t.print();三,程序测试对类进行测试,测试数据为:2,5。输出结果:四,实验小结 此题的关键是注意循环条件的限制,注意条件的判断以及语句的先后顺序。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社 提高部分实践九提高题 第2题:一、实践任务设计一个电子通讯录。其中包括如下类:(1) 通信地址addr。包含公有数据:成员char post10: /邮编成员char ad40; /家庭地址构造函数addr(char p10=”,char a40=”);成员函数void setadd(addr a); /用a为当前对象赋值(2) 出生年月类birth.包含公有数据:成员int year; /年份成员int month; /月份成员int day; /日期构造函数birth(int y=0,int m=0,int d=0);成员函数void setbir(birth b); /用b为当前对象赋值(3)类friends.包含数据: 私有成员int number; /序号 私有成员char name20; /姓名 私有成员char sex; /性别 私有成员char telephone13; /联系电话公有成员birth bir; /出生年月 公有成员addr add; /通信地址 公有构造函数friends(int nu=0,char n20=” “,char s= ,int y=0,int m=0,int d=0,char p10=” “,char a40=” “,char t13=” “); 公有成员函数void setfri(int nu,char n20,char s,birth b,addr a,char t13); /为当前对象赋值公有成员函数friends input(friends &bb); /为对象bb输出数据公有成员函数int search(friends aa100,char n20); /在aa中查找姓名为n的对象;公有成员函数void show(friends aa); /输出对象aa公有成员函数void delet(friends aa100,int k); /在aa中删除下标为k的元素 (4)在主函数中完成主菜单的设计,并根据输入值完成所需操作。二,程序设计 (1)程序功能分析 本程序主要掌握如何使用类与不同类之间的函数调用问题。(2)类的定义和描述。(3)编写源程序如下:#include#includeclass addrpublic:char post10;char ad40;addr(char p10=,char a40=)strcpy(post,p); strcpy(ad,a);void setadd(addr a)strcpy(post,a.post); strcpy(ad,a.ad);class birthpublic:int year;int month;int day;birth(int y=0,int m=0,int d=0)year=y;month=m;day=d;s,birth b,addr a,char t13) number=nu;strcpy(name,n); sex=s;strcpy(telephone,t);bir.year=b.year;bir.month=b.month;bir.day=b.day;strcpy(add.post,a.post); strcpy(add.ad,a.ad);friends input(friends &bb) cout输入numberbb.number;cout输入;cout输入sexbb.sex;cout输入telephonebb.telephone; cout输入yearbb.bir.year;cout输入monthbb.bir.month; cout输入daybb.bir.day;cout输入postbb.add.post; cout输入adbb.add.ad;return bb;int search(friends aa100,char n20)for(int i=0;i100;i+)if (strcmp(,n)=0) return i;return 0;void show(friends aa) coutaa.numberendl;endl; dd.delet(cc,m);break;case 5: break;void setbir(birth b)year=b.year;month=b.day;day=b.day;class friendsint number;char name20;char sex;char telephone13;public:birth bir;addr add;friends(int nu=0,char n20= ,char s= ,int y=0,int m=0,int d=0,char p10= ,char a40= ,char t13= ):bir(y,m,d),add(p,a)number=nu;strcpy(name,n);sex=s;strcpy(telephone,t);void setfri(int nu,char n20,char coutaa.sexendl;coutaa.telephoneendl;coutaa.bir.year; coutaa.bir.month; coutaa.bir.day;coutaa.add.post;coutaa.add.ad;void delet(friends aa100,int k)for(int i=k;i=100;i+)aai=aai+1; void main() int n,m;char s20=cwj;friends dd,cc100;cout1.输入数据endl;cout2.输出数据endl;cout3.查找数据endl;cout4.删除数据endl;cout5.退出endl;cout请选择(15)n;for(;n!=5;)cout请选择(15)n;switch(n)case 1:for(int i=0;i100;i+) dd.input(cci); break;case 2: dd.show(dd);break;case 3: if(dd.search(cc,s) cout姓名为s的对象下标为dd.search(cc,s);elsecout找不到姓名为s的对象endl;break;case 4: cout输入删除下标m;三,程序测试对类进行测试,输出结果:四,实验小结 此题的关键是掌握如何使用类与不同类之间的函数调用问题。五,参考文献: 1 张岳新 Visual c+程序设计 苏州大学出版社 2 祁云嵩,刘永良,华伟Visual c+程序设计解析与训练 华东理工大学出版社 3 张晓如,王芳 Visual C+程序设计解析与实训中国铁道出版社 实践十提高题第6题:一实践任务6 设计一个大学师生类,包括学生类(Student),教师类(Professor),职员类(Staff),教师类是职员类的派生类。另有一类既作为学生又兼做助教的,可作为学生类和职员类的派生类(StudentStaff)。另外定义一个所有类的父类(DataRec)。具体要求如下:(1) DataRec类中数据成员又姓名,家庭住址,定义为指针变量。成员函数有构造函数,析构函数,输出函数,strsave函数。输出函数定义为虚函数。Strsave函数用来动态申请内存空间,拷贝参数中的字符串,返回内存空间的首地址。因为所有的派生类都要用到,设置为保护权限(2) Student类数据成员有专业、学号,专业定义为指针变量。Staff类数据成员有部门、计时薪酬,部门定义为指针变量。Professor类数据成员有工资,这三个类都有输出函数,用来输出自己的数据成员(3) StudentStaff类多重继承学生类和职员类。成员函数有输出函数(4) DataRec类可以定义为虚基类(5) 每个类中数据成员定义为私有的(6) 编写main函数,测试上述所要求的各种功能。二系统设计1概要设计(1)系统功能分析本系统的功能是存储大学师生的基本信息,如:姓名,家庭住址,专业,部门等。(2)类的层次图: Student Staff Professor StudentStaff DataRec2详细设计(1)类的描述与定义l 基类DataRec有2个保护成员,定义如下:class DataRec /基类protected: char *name;/姓名char *address;/地址l 学生类有2个私有成员,定义如下:class Student:DataRec/学生类private:char* major; /专业int number; /学号l 员工类有2个保护成员,定义如下:class Staff:DataRec /员工类protected:char* department; /.部门double t_salary; /计时工资l Professor类有一个私有成员,定义如下:class Professor:Staff /professor 类private:double salary; /工资(1) 主要成员函数设计l 基类的构造函数定义如下:DataRec(char *nam,char *addr)name=strsave(nam);address=strsave(addr);l 基类的析构函数定义如下:DataRec()delete name;delete address;l 基类中strsave函数定义如下:char* strsave(char *s)char* r=new charstrlen(s)+1;strcpy(r,s);return r;l 基类中输出函数的功能没有必要先定义,将其说明为纯虚函数,其具体实现在派生类中定义:virtual void Output()=0;l Student类的构造函数定义如下:Student(char *nam,char *addr,char* majo,int num):DataRec(nam,addr)major=strsave(majo);number=num;l Student类的析构函数定义如下:Student()delete major;l Student 类的输出函数定义如下:void Output()coutnameendl;coutaddressendl;coutMajor:majorendl;coutIdnumber:numberendl;l Staff类的构造函数定义如下:Staff(char *nam,char *addr,char* depar,double t_sala):DataRec(nam,addr) department=strsave(depar);t_salary=t_sala;l Staff类的析构函数定义如下:Staff()delete department;l Staff类的输出函数定义如下:void Output()coutnameendl;coutaddressendl;coutDepartment:departmentendl;couthourly wage:t_salaryendl;l Professor 类的构造函数定义如下:Professor(char *name, char *addr, char* depar, int t_sala, double salar):Staff (nam,addr,depar,t_sala)salary=salar;l Professor类的输出函数定义如下:void Output()Staff:Output();coutSalary:salaryendl;l StudentStaff类构造函数定义如下:StudentStaff(char *nam,char *addr,char* majo,int num,int salar,char* depar,double t_sala):Student(nam,addr, majo, num),Staff(nam,addr, depar, t_sala);l StudentStaff 类的输出函数定义如下:void Output()Student:Output();coutDepartment:departmentendl;couthourly wage:t_salaryendl;三、源程序如下:#include#includeclass DataRecprotected:char *name;char *address;char* strsave(char *s)char* r=new charstrlen(s)+1;strcpy(r,s);return r;public: DataRec(char *nam,char *addr)name=strsave(nam);address=strsave(addr);DataRec()delete name;delete address;virtual void Output()=0;class Student:DataRecprivate:ch

温馨提示

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

最新文档

评论

0/150

提交评论