c程序设计实践报告.doc_第1页
c程序设计实践报告.doc_第2页
c程序设计实践报告.doc_第3页
c程序设计实践报告.doc_第4页
c程序设计实践报告.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

江苏科技大学课程实践报告设计题目: 程序设计(VC+)实践 设计时间 2014-3-1 至 2014-4-1 学院(系): 船舶与海洋工程 专业班级: 船海一班 学生姓名: 程尉 学号 1240101108 指导老师: 张晓如 实践任务一(第1题)一、程序设计基本题试建立一个类PP,求出下列多项式的前n项的值。1 n=0Pn(x) = x n=1 (2n-1)xPn-1(x)-(n-1)P n-2 (x) n1具体要求如下:(1) 私有数据成员l int n:前若干项的项数。l double x:存放x的值。l double *p:根据n的大小动态申请存放Pn(x)前n项的数组空间。(2) 共有成员函数l PP(int num,double x1):构造函数,初始化数据成员n和x,使p指向动态申请的数据空间。l PP( ):析构函数,释放p指向的动态内存空间。l double fun(int n1,double x):递归函数,用于求多项式Pn(x)的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。l void process( ):完成求前n项的工作,并将它们存放发到p指向的动态数组中。l void show( ):输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3) 在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,并输出多项式前num项的值。二、系统设计1、概要设计 通过类PP的成员函数process( )来求多项式Pn(x)的前n项的值,其中用fun( )函数来求第n项的值,根据n的大小来给数据成员p分配动态空间,程序结束前释放为items分配的动态空间。2、详细设计类的定义如下:class PPint n;double x;double *p;public:PP(int num,double x1)void process( )void show( );类的主要成员函数的设计double fun(int n1,double x) /设计函数来求Pn(x)if(n1=0) return 1;else if(n1=1)return x; return (2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x)/n1;三、系统测试用以测试的数据为:3 4预期的输出结果为:n=3 x=41 4 23.5 154四、实践小结这道题主要是把题目看懂,其实只是一些简单的函数定义而已。五、参考文献1潘克勤,华伟,Visual C+程序设计 北京:中国铁道出版社 2008六、源程序清单#include class PPint n;double x;double *p;public:PP(int num,double x1)n=num;x=x1;p=new doublen+1;PP()if(p)deletep;double fun(int n1,double x)if(n1=0)return 1;else if(n1=1)return x; return (2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x)/n1;void process()for(int i=0;in+1;i+)pi=fun(i,x);void show()coutn=ntx=xn;for(int i=0;in+1;i+)coutpit;if(i+1)%4=0)coutnumx1;PP items(num,x1);items.fun(num,x1);cess();items.show();实践任务二(第2题)一、程序设计基本题试建立一个类SP,求f(n,k)=1k +2k+3k+nk ,另有辅助函数power(m,n)用于求mn 。 具体要求如下: (1)私有成员函数。l int n,k:存放公式中n和k的值; (2)公有成员函数。l SP(int n1,int k1):构造函数,初始化成员数据n和k。l int power(int m,int n):求mn 。l int fun( ):求公式的累加和。l void show( ):输出求得的结果。 (3)在主程序中定义对象s,对该类进行测试。二、系统设计1、概要设计通过类SP的成员函数power()求出m的n次方的值,再通过成员函数fun( )调用power( )函数求出f(n,k)的值。2、详细设计类的定义如下:class SP int n,k;public: SP(int n1,int k1) int power(int m,int n) int fun ( ) void show( );类的主要成员函数的设计int power(int m,int n)int p=1; /用for循环语句来实现求mn的值for(int i=1;in+1;i+)p=p*m;return p;int fun(int n,int k)s=0; /用for循环语句来实现公式的累加和for(int j=1;j=n;j+)s+=power(j,k);return s;三、系统测试用以测试的数据为:2 3预期的输出结果为:9四、实践小结这道题值得注意的是在成员函数fun( )中调用了函数power( ),还有对for循环语句的熟练运用。五、参考文献 1张晓如,王芳,Visual C+程序设计解析与实训 北京:中国铁道出版社 2008六、源程序清单#includeclass SPint n,k,s;public:SP(int n1,int k1)n=n1;k=k1;int power(int m,int n)int p=1;for(int i=1;in+1;i+)p=p*m;return p;int fun(int n,int k)s=0;for(int j=1;j=n;j+)s+=power(j,k);return s;void show()cout和为snk;SP s(n,k);s.power(n,k);s.fun(n,k);s.show();实践任务三(第3题)1、 程序设计基本题建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。 具体要求如下: (1)私有成员函数l int *array:一维整型数组。l int n:数组中元素的个数。 (2)公有成员函数l MOVE(int b ,int m):构造函数,初始化成员数据。l void exchange():输出平均值,并将数组中的元素按要求重新放置。l void print():输出一维数组。l MOVE:析构函数。 (3)在主程序中用数据21,65,43,87,12,84,44,97,32,55对 该类进行测试。二、系统设计1、概要设计根据数组中元素的个数开辟一个动态数组空间array,通过类MOVE的成员函数exchange()输出一维数组的平均值,并把数组中最大元素和最小元素的位置相互交换,并把新的数组放在开辟的动态数组空间中。程序结束前释放为array分配的动态空间。2、详细设计类的定义如下:class MOVEint *array;int n;public:MOVE(int b ,int m)void exchange( )void print( )MOVE( );类的主要成员函数的设计void exchange()float p,s=0;for(int i=0;in;i+)s+=arrayi;p=s/n; /求数组中所有元素之和的平均值 int a,b,min=array0,max=array0;cout平均值:pn;for(i=0;in;i+) if(maxarrayi) max=arrayi; a=i; /求所有元素中的最大值for(i=0;iarrayi)min=arrayi; b=i; /求所有元素中的最小值 arraya=min; arrayb=max;三、系统测试用以测试的数据为:21 65 43 87 12 84 44 97 32 55预期的输出结果为:平均值:5421 65 43 87 97 84 44 12 32 55四、实践小结这道题主要是求数组中所有元素的平均值以及元素中的最大值和最小值,同时还要注意析构函数的运用。五、参考文献1潘克勤,华伟,Visual C+程序设计 北京:中国铁道出版社 2008六、源程序清单#includeclass MOVEint *array;int n;public:MOVE(int b,int m)n=m;array=new intn;for(int i=0;in;i+)arrayi=bi;void exchange()float p,s=0;for(int i=0;in;i+)s+=arrayi;p=s/n; int a,b,min=array0,max=array0;cout平均值:pn;for(i=0;in;i+) if(maxarrayi) max=arrayi; a=i; for(i=0;iarrayi)min=arrayi; b=i; arraya=min; arrayb=max;void print()for(int i=0;in;i+)coutarrayit;coutn;MOVE()if(array)deletearray;void main()int s=21,65,43,87,12,84,44,97,32,55;MOVE move(s,10);move.exchange();move.print();实践任务四(第6题)1、 程序设计基本题 定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文 字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。 具体要求如下: (1)私有成员函数l char*str;l int y:标记是否为回文字符串。 (2)公有成员函数l String(char*s):构造函数,用给定的参数s初始化数据成员str。 Y初始化为0。l void huiwen():判断str所指向的字符串是否为回文字符串。l void show():在屏幕上显示字符串。 (3)在主程序中定义字符串char s=“ababcedbaba”作为原始字符串。定 义一个String类对象test,用s初始化test,完成对该类的测试。二、系统设计1、概要设计通过回文函数来进行判断,然后将函数判断结果进行输出。2、详细设计类的定义如下:class Stringchar *str;int b;public:String(char *s)void huiwen( )void show( )String( );类的主要成员函数的设计void huiwen()char *p1=str,*p2=str;while(*p2)p2+;p2-;for(;p1p2;p1+,p2-) /判断str所指向的字符串是否为if(*p1!=*p2) 回文字符串/b=1;break;三、系统测试用以测试的字符串为:ababcedbaba预期的输出结果为:ababcedbaba不是回文字符串四、实践小结这道题困难在于用指针来操作字符串,定义了两个指针,分别指向字符串的首尾,通过比较两个指针所指的字符是否相等来判断是否为回文字符串。五、参考文献 1张晓如,王芳,Visual C+程序设计解析与实训 北京:中国铁道出版社 2008六、源程序清单#include#includeclass Stringchar *str;int b;public:String(char *s)str=new charstrlen(s)+1;strcpy(str,s);b=0;void huiwen()char *p1=str,*p2=str;while(*p2)p2+;p2-;for(;p1p2;p1+,p2-)if(*p1!=*p2)b=1;break;void show()if(b)coutstr不是回文字符串n;else coutstr是回文字符串n;String()if(str)deletestr;void main()char *s=ababcedbaba;String test(s);test.huiwen();test.show();实践任务五(第4题)一、程序设计基本题建立一个类MOVE,实现将数组中大写字母元素放在小写字母元素的左边。具体要求如下: (1)私有数据成员 char*array:一维字符数组。 int n:数据中元素的个数。 (2)公有成员函数 MOVE(char b ,int m) :构造函数,初始化成员数据。 void change( ):进行排序换位。 void print( ):输出一维数组。 MOVE( ):析构函数。 (3)在主程序中用数据“fdsUFfsTjfsKFEkWC”对该类进行测试。二、系统设计1、概要设计为array开辟一个动态数组空间,通过类MOVE的成员函数change( )来实现将数组中的大写字母元素放在小写字母元素的左边的功能。程序结束前释放为array分配的动态空间。2、详细设计类的定义如下:class MOVE char *array; int n;public: MOVE(char ,int ); void change( ); void print( ); MOVE( ); ;三、系统测试用以测试的数据为: FdsUFfsTjfsKFEkWC 预期输出结果为: UFTKFEWCfdsfsjfsk4、 实践小结这道题和之前的一道题有点类似,五、参考文献1潘克勤,华伟,Visual C+程序设计 北京:中国铁道出版社 20082张晓如,王芳,Visual C+程序设计解析与实训 北京:中国铁道出版社 2008六、源程序清单#includeclass MOVEchar*array;int n;public:MOVE(char b,int m)n=m;array=new charn;for(int i=0;in;i+)arrayi=bi;void change()char a;for(int i=1;i=a&arrayi-1=z)a=arrayi-1;for(int j=i-1;jn;j+)arrayj=arrayj+1;arrayn-1=a;i-;void print()for(int i=0;in;i+)coutarrayi;coutendl;MOVE()if(array)deletearray;void main()char*arr=fdsUFfsTjfsKFEkWC;MOVE test(arr,17);test.change();test.print(); 实践任务六(第19题)一、程序设计基本题定义一个方阵类Array,实现对方阵进行顺时针90度旋转。如图所示:1 2 3 4 13 9 5 15 6 7 8 14 10 6 29 10 11 12 15 11 7 313 14 15 16 16 12 8 4具体要求如下: (1)私有成员函数。l int a44:用于存放方阵。 (2)公有成员函数。l Array(int a14,int n):构造函数,用给定的参数a1初始化数据成员a。l void xuanzhuan():实现对方阵a进行顺时针90度的旋转。l int fun( ):求公式的累加和。l void show():在屏幕上显示数组元素。 (3)在主程序中定义数组int b 4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。在主程序中定义对象s,对该类进行测试。二、系统设计1、概要设计 通过类的成员函数xuanzhuan( )来实现对方阵a进行顺时针90度的旋转,旋转后再放入二维数组中。2、详细设计类的定义如下:class Arrayint a44;public:Array(int a1 4,int n)void xuanzhuan( )void show( );类的主要成员函数的设计void xuanzhuan( )int b44; /定义一个临时数组来存放a数组 for(int i=0;i4;i+)for(int j=0;j4;j+)bij=aij;for(int x=0;x4;x+) /旋转后的数组行等于3减去之前的 列,列为之前的行/for(int y=0;y4;y+)axy=b3-yx;三、系统测试用以测试的数组为:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16预期的输出结果为:13 9 5 114 10 6 215 11 7 316 12 8 4四、实践小结这道题可以举一反三,通过这道题的运算可以方便以后旋转类的基本设计。五、参考文献1潘克勤,华伟,Visual C+程序设计 北京:中国铁道出版社 20082张晓如,王芳,Visual C+程序设计解析与实训 北京:中国铁道出版社 2008六、源程序清单#includeclass Arrayint a44;public:Array(int a14,int n)for(int i=0;in;i+)for(int j=0;j4;j+)aij=a1ij;void xuanzhuan()int b44; for(int i=0;i4;i+)for(int j=0;j4;j+)bij=aij;for(int x=0;x4;x+)for(int y=0;y4;y+)axy=b3-yx;void show()for(int i=0;i4;i+)for(int j=0;j4;j+)coutaijt;coutn;void main()int b 4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;Array test(b,4);test.xuanzhuan( );test.show( ); 实践任务七(改错第7题)一、改错基本题以下程序统计一个字符串中包含某个字符的单词所出现的次数。这里假设单词之间由一个或多个空格分隔,且在判断字符是否相等时不区分大小字母。请改正其中的错误。程序正确的运行结果为字符串“I am a student.My name is Tony.I am twenty.”中包含字符T的单词有3个。含有错误的源程序如下。#includechar convert(char c)if(c=A&c=Z)return c+a-A;return c;int search(char *str,char ch)int count=0,flag=0;for(;*str;str+)if(flag|*str= )flag=1;while(*(str+)= );str-;for(char *str1=str;*str= &*str;str1+)if( convert(*str)=convert(ch)count+;return count;return count;void main()char str50=I am a student.My name is Tony.I am twenty.,ch=T;cout字符串str中包含字符ch的单词有search(str,ch)个endl;二、系统测试运行结果:字符串“I am a student.My name is Tony.I am twenty.”中包含字符T的单词有3个。三、实践小结运行结果这题十分简单四、参考文献1潘克勤,华伟,Visual C+程序设计 北京:中国铁道出版社 20082张晓如,王芳,Visual C+程序设计解析与实训 北京:中国铁道出版社 2008五、源程序清单#include char convert(char c) if(c=A&c=Z) return c+a-A; return c;int search(char *str

温馨提示

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

评论

0/150

提交评论