vc++课题实践.docx_第1页
vc++课题实践.docx_第2页
vc++课题实践.docx_第3页
vc++课题实践.docx_第4页
vc++课题实践.docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

课程实践报告设计题目: 计算机程序设计实践(VC+) 设计时间: 2012. 2.27 至 2012. 3.4 学 院: 机械工程学院 专业班级: 机械电子工程专业3班 学生姓名: 李 亮 学号 1040206311 指导老师: 华 伟 2012 年 3月 4 日一、实践任务 任务一:试建一个类SP,求f(n,k)= ,另有辅助函数power(m,n)用于求。 具体要求如下:(1)私有成员数据。l int n , k:存放公式中n和k的值;(2)公有成员函数。l SP( int n1, int k1):构造函数,初始化成员数据。l int power(int m,int n):求。l int fun():求公式中的累加和。l void show():输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。任务二:建立一个类PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。 具体要求如下:(1) 私有数据成员l int (*p)20:指向按照折叠规律存放方阵的二维整型数组。l int startnum:折叠方阵的起始数。l int n:存放方针的层数。(2) 公有成员函数l PHALANX(int s,int m):构造函数,初始化成员数据。l void process():生成起始数为startnum的n行方阵。l void print():输出折叠方阵。l PHALANX():析构函数。(3) 在主程序中对该类进行测试。任务三:定义一个方阵类Array,实现对方阵进行逆时针90度旋转。如图所示。 具体要求如下:(1) 私有数据成员:l int a44:用于存放方阵。(2) 公有成员函数l Array(int a14,int n):构造函数,用给定的参数a1初始化数据成员a。l void xuanzhuan():实现对方阵a进行逆时针90度的旋转。l void show():在屏幕上显示数组元素。(3) 在主程序中定义数组int b4= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。任务四:建立一个类NUM,指定数据范围内的所有合数(非质数)。提示:合数定义是“一个数,除了1和它本身,还有其他约数,这样的数叫合数”。具体要求如下:(1) 私有数据成员l *data :动态存放在指定范围内求出的所有合数。l int span1,span2:存放指定范围内的下限和上限。l int num:存放span1与span2之间的合数个数。(2) 公有成员函数l NUM(int n1,int n2):构造函数,用参数n1和n2初始化span1和span2,同时初始化num。l int isComposite(int x):判断x是否为合数。若是合数,返回1,否则返回0。l void process():指定范围内的所有合数,吧它们依次存放在数组data中,并将求出的合数个数赋给num。l void print():输出求出的素数个数及所有合数,每行输出8个合数。l NUM():释放动态分配的存储空间。(3) 在主函数中完成对该类的测试。定义一个NUM类对象test,指定查找范围为100200,即求100至200之间的所有合数。通过test调用成员函数完成求合数及输出合数的工作。任务五:试定义一个类ID,实现根据某人的身份证号码判定其在所指定的年份时的虚岁年龄(即年份之差加1)。具体要求如下:(1)私有数据成员char id19;存放身份证号码,身份证号为18位。int age;根据身份证号码和指定年份计算后得到的虚岁年龄。(2)公有成员函数ID(char*p);构造函数,利用参数p初始化身份证号码。Int substr(char*p0,char n0,int n);取字符串p0中从第n0个字符开始的连续n个字符(假设都是数字字符)并按顺序转化为相应的整数值,结果作为函数的返回值。void fun(int y1);计算对应某个年份y1,该身份证号码主人的虚岁年龄。对于18位身份证。从第七位(序号从1开始)开始的四位数字为其出生年份。void print();打印身份证号码及其年龄。(3)在主程序中对该类进行测试。任务六:试定义一个类NUM,实现对于给定的任意整数,求出其降序数。具体要求如下:(1)私有数据成员int n;存放一个整数。Int m;存放n的降序数。(2)公有成员函数NUM(int x=0)构造函数,用参数x初始化数据成员n。void decrease();求数据成员n的降序数,并存放到数据成员m中。void print();输出原整数及其降序数。(3)在主程序中对该类进行测试。任务七:试定义一个类NUM,实现求大于整数m的最小的k个自反数。具体要求如下:(1)私有数据成员int *p;P指向用于存储满足条件的k个自反数的动态数组。Int m,k;(2)公有数据成员NUM(int t1,int t2);构造函数,用参数t1,t2分别初始化m,k,并为p分配相应的存储空间。int isinv(int n); 判断整数n是否为自反数,如果是,则返回1,否则返回0。void fun(); 根据题意将求得的自反数按从小到大的顺序存放在p所指定的动态数组中。要求利用成员函数isinv()来判断整个整数是否为自反数。void print();输入整数及输出满足条件的自反数。NUM();析构函数,释放动态内存。(3)在主程序中对该类进行测试。任务八:试定义一个类Num,其功能是求出1000以内所有满足下列条件的整数:(1)该整数是一个素数,(2)其各位数字之和与它的平方数的各位数字之和相等。具体要求如下:(1)私有数据成员int a20;存放结果。int count;结果数组的元素个数。(2)公有成员函数Num();构造函数。设置count的初始值为0。int prime(int x);判断参数x是否为素数,如果是则返回1,否则返回0。int digitsum(int x);计算参数x的各位数字之和,并返回计算的结果。void fun();找出1000以内所有满足条件的数,并存放到成员数组a中,同时计数。void print();输出所有符合条件的数。(3)在主函数中完成对该类的测试。二、系统设计 任务一1、 任务(系统)分析通过类SP的成员函数power(int m,int n)求出m的n次方,int fun()求出公式的累加和。函数show()输出求得的结果。类的定义如下:class SPprivate:int n,k;public:SP(int n1,int k1);int power(int m,int n);int fun();int show();2、 算法设计1) 求m的n次方定义变量m和n利用循环语句for(int i=1;in;i+);m*=m;最后返回m的值,供函数调用。2) 求公式的累加和 定义变量a,并将a赋初值0,利用循环语句for(int j=1;jbd; SP s(b,d); s.show();运行结果:任务二1. 任务(系统)分析 构造函数PHALANX(int s,int m)初始化成员数据。类的函数precess()生成起始数为startnum的方阵。函数print()输出折叠方阵。2. 算法设计定义二维数组pij,利用循环语句for(int i=0;in;i+)for(int j=0;j=0;j-)pij=startnum+;生成折叠方正。3. 系统测试在主函数中以整数初始化PHALANX的对象,并调用其成员函数show()输出测试结果。主函数定义如下: void main()int a=1,b=4;PHALANX test(a,b);cess();test.print();运行结果:任务三1. 任务(系统)分析类的构造函数Array(int a14)用给定的参数a1初始化成员数据a。成员函数旋转()实现对方阵a进行逆时针90度的旋转。Show()在屏幕上显示出数组元素。2. 算法设计1) 利用循环语句for(int i=0;in;i+) for(int j=0;j4;j+) aij=a1ij;初始化a44。2) 定义变量int b44;利用循环语句for(int i=0;i4;i+)for(int j=0;j4;j+)bij=aij;for(int k=0;k4;k+)for(int f=0;f4;f+)a3-fk=bkf;实现对方阵的旋转。3. 系统测试在主函数中以整数初始化Array的对象,并调用其成员函数show()输出测试结果。主函数定义如下:void main()int a24=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;int n1=4;Array test(a2,n1);test.xuanzhuan();test.show();运行结果:任务四1. 任务(系统)分析 类的构造函数NUM(int n1,int n2)用参数n1和n2初始化span1和span2,同时初始化num。成员函数isComposite(int x)判断x是否为合数。函数precess():求指定范围内的所有合数,把它们依次存放在数组data中,并将求出的合数个数赋给num。2. 算法设计1) 利用语句for(int i=2;ix;i+)if(x%i=0)return 1 ;break;else return 0;判断x是否为合数。2) 利用循环语句num=0;for(int j=span1,i=0;j=span2;j+)if(iscomposite(j)datai=j;i+;num+;求出指定范围内的合数和个数。3. 系统测试 在主函数中以整数初始化NUM的对象,并调用其成员函数show()输出测试结果。主函数定义如下: void main()int t1=100,t2=200;NUM test(t1,t2);cess();test.print();运行结果:任务五1. 任务(系统)分析类的构造函数ID(char *p)利用参数p初始化身份证号码。成员函数substr(char *p0,char n0,int n)取字符串p0中从第n0个字符的连续n个字符并按顺序转换为相应的整数值,结果作为函数的返回值。2. 算法设计1) 定义变量char id19;利用循环语句for(int i=0;i19;i+)idi=pi;初始化成员数据。2) 利用语句int a119;for(int i=n0,j=0;in0+n;i+,j+)a1j=p0i-48;int x=0;for(int k=0;kn;k+)x*=10; x+=a1k;将从第n0个起后的n位字符转换为相映的数字并保存在数组a1中。3) 用指定的年份计算虚岁年龄。age=y1-substr(id,6,4);并返回age。3. 系统测试在主函数中以整数初始化ID的对象,并调用其成员函数show()输出测试结果。主函数定义如下:void main() int y;couty;char c19=32062119910522831x;ID test(c);test.fun(y);test.print();运行结果:任务六1. 任务(系统)分析 用类的构造函数初始化数据成员n,成员函数decrease()求尘缘n 的降序数,并存放到数据成员m中;将整数的各位数字依次存储到一维整型数组a中,再将a中的元素降序排列,最后利用数组a中的元素合成整数。2. 算法设计 以用一下程序语句实现n的降序数int a100,j=1;for(int i=0;i+,j+)if(n/10)ai=n%10;n/=10;else ai=n;break;int t;for(int k1=0;k1j;k1+)for(int k2=k1+1;k2ak1) t=ak1; ak1=ak2; ak2=t; m=0;for(int n1=0;n1j;n1+)m*=10;m+=an1;3. 系统测试在主函数中以整数初始化NUM的对象,并调用其成员函数print()输出测试结果。主函数定义如下:void main() int c;coutc;NUM test(c);test.decrease();test.print();运行结果:任务七1. 任务(系统)分析 类的构造函数的参数t1、t2分别初始化m、k并为p分配相应的空间。函数isinv(int n)判断n是否为自反数。函数fun()将求得的自反数按从小到大的顺序存到p所指向的动态存储空间。2. 算法设计1) 对成员数据的初始化m=t1;k=t2;p=new int k2) 判断n是否为自反数,是则返回1否则返回2。int a100,j=1;for(int i=0;i+,j+)if(n/10)ai=n%10;n/=10;else ai=n;break;for(int k1=0,k2=j-1;k1k2;k1+,k2-)if(ak1!=ak2)return 0;break;return 1;3) 将所求的自反数按从小到大的顺序排列int j=0;for(int x=m+1,k1=0;x+)if(isinv(x)pk1=x;j+;k1+;if(j=k)break;3. 系统测试在主函数中以整数初始化NUM的对象,并调用其成员函数print()输出测试结果。主函数定义如下:void main() int a,b;coutab;NUM test(a,b);test.fun();test.print();运行结果:任务八1. 任务(系统)分析类的成员函数prime(int x)判断参数x是否为素数;digitsum(int x)计算参数的各位数字之和。Fun()找出1000以内的所有满足条件的数,并存放到成员数组a中。2. 算法设计1) 利用以下语句判断参数是否为素数if(x=1)return 0;for(int i=2;ix;i+) if(x%i=0)return 0;break;return 1;2) 计算参数各位数字之和int s=0;while(x)s+=x%10; x/=10;return s;3) 找出1000以内的所有满足条件的数for(int i=1;i=1000;i+)int j;if(prime(i)j=i*i; if(digitsum(i)=digitsum(j)acount=i;count+;3. 系统测试在主函数中以整数初始化NUM的对象,并调用其成员函数print()输出测试结果。主函数定义如下: void main()Num test;test.fun();test.print(); 运行结果: 三、实践小结应熟练掌握递归函数的应用,写递归函数时应先进行递归结束条件的判定。掌握用循环语句求mn,和m!,熟练掌握函数的调用。应熟练掌握数组与指针的应用。学会求数组中最大元素与最小元素方法,并实现交换。四、参考文献Visual C+程序设计苏州大学出版社。Visual C+教程机械工业出版社。Visual C+教程清华大学出版社。五、源程序清单任务一#includeclass SPprivate:int n,k;public:SP(int n1,int k1);int power(int m,int n);int fun();int show();SP:SP (int n1,int k1)n=n1;k=k1;int SP:power(int m,int n)int t=1;for(int i=1;in;i+)m*=m; return m;int SP:fun()int a=0;for(int j=1;jn;j+)a+=power(j,k); return a;void SP:show()coutf()bd;SP s(b,d);s.show();任务二#includeclass PHALANXint(*p)20;int startnum;int n;public:PHALANX(int s,int m);void process();void print(); PHALANX();PHALANX:PHALANX(int s,int m)startnum=s;n=m;p=new int 2020;void PHALANX:process()for(int i=0;in;i+)for(int j=0;j=0;j-)pij=startnum+;void PHALANX:print()for(int i=0;in;i+)for(int j=0;jn;j+)coutpijt;coutn;PHALANX:PHALANX()if(p)delete p;void main()int a=1,b=4;PHALANX test(a,b);cess();test.print();任务三#includeclass Arrayprivate:int a44;public:Array(int a14,int n);void xuanzhuan();void show();Array:Array(int a14,int n)for(int i=0;in;i+)for(int j=0;j4;j+)aij=a1ij;void Array:xuanzhuan()int b44;for(int i=0;i4;i+)for(int j=0;j4;j+)bij=aij;for(int k=0;k4;k+)for(int f=0;f4;f+)a3-fk=bkf;void Array:show()for(int i=0;i4;i+)for(int j=0;j4;j+)coutaijt;coutn;void main()int a24=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;int n1=4;Array test(a2,n1);test.xuanzhuan();test.show();任务四#includeclass NUMprivate:int *data;int span1,span2;int num;public:NUM(int n1,int n2);int iscomposite(int x);void process();void print();NUM();NUM:NUM(int n1,int n2)span1=n1;span2=n2;data=new int 100;int NUM:iscomposite(int x)for(int i=2;ix;i+)if(x%i=0)return 1 ;break;else return 0;void NUM:process()num=0;for(int j=span1,i=0;j=span2;j+)if(iscomposite(j)datai=j;i+;num+;void NUM:print()cout合数的个数:numn;for(int k=1,i=0;inum;i+,k+)coutdatait;if(k%8=0)coutn;NUM:NUM()if(data)delete data;void main()int t1=100,t2=200;NUM test(t1,t2);cess();test.print();任务五#includeclass IDchar id19;int age;public:ID(char *p);int substr(char *p0,char n0,int n);void fun(int y1);void print();ID:ID(char *p)for(int i=0;i19;i+)idi=pi;int ID:substr(char *p0,char n0,int n)int a119;for(int i=n0,j=0;in0+n;i+,j+)a1j=p0i-48;int x=0;for(int k=0;kn;k+)x*=10; x+=a1k;return x;void ID:fun(int y1) age=y1-substr(id,6,4);void ID:print() cout身份证号:;for(int i=0;i19;i+)coutidi;coutn;cout虚岁年龄:agen;void main() int y;couty;char c19=32062119910522831x;ID test(c);test.fun(y);test.print(); 任务六#includeclass NUMint n;int m;public:NUM(int x=0);void decrease();void print();NUM:NUM(int x)n=x;void NUM:decrease()int a100,j=1;for(int i=0;i+,j+)if(n/10)ai=n%10;n/=10;else ai=n;break;int t;for(int k1=0;k1j;k1+)for(int k2=k1+1;k2ak1) t=ak1; ak1=ak2; ak2=t; m=0;for(int n1=0;n1j;n1+)m*=10;m+=an1;void NUM:print()cout该数的降序数:mendl;void main() int c;coutc;NUM test(c);test.decrease();test.print();任务七#i

温馨提示

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

评论

0/150

提交评论