基于静态数组的集合的并、交、差运算课程设计.docx_第1页
基于静态数组的集合的并、交、差运算课程设计.docx_第2页
基于静态数组的集合的并、交、差运算课程设计.docx_第3页
基于静态数组的集合的并、交、差运算课程设计.docx_第4页
基于静态数组的集合的并、交、差运算课程设计.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计课 程 设 计 报 告 书题 目:基于静态数组的集合的并、交、差运算 专 业:计算机科学与技术 学 号: 学生姓名: 指导教师: 完成日期: 22目录一、题目要求1二、系统概要设计22.1程序流程图22.2主要函数设计3三、系统关键代码43.1利用静态数组存放集合的元素功能:43.2系统功能菜单:43.3求两个集合交集功能:53.4求两个集合差集功能:63.5求两个集合并集功能:93.6主函数10四、程序调试12五、课程设计总结13一、 题目要求我的高级语言程序设计课程设计题目是:基于静态数组的集合的并、交、差运算。指导教师对该题目有以下要:1. 利用静态数组存放集合的元素。2. 在静态数组基础上实现集合的并、交、差。3. 要求有合理的输入输出。4. 界面要求尽可能美观,要方便操作。 5. 该题目最高成绩为“良好”。少一个功能降一个等级。经过努力,我实现了下面的功能:1. 实现集合的交2. 实现集合的并3. 实现集合的差4. 用静态数组存放集合的元素下面的功能由于自己知识储备不足,未能实现:1. 2. 二系统概要设计2.1程序流程图开始用静态数组存放集合的元素显示菜单实现集合的并实现集合的交实现集合的差输出结束 图1.程序流程图2.2主要函数设计该系统涉及到的主要函数及其说明如表1所示:表1. 系统中的主要函数介绍序号函数声明函数功能1void input()利用数组存入集合的元素2void menu()菜单功能现实函数3void intersect()实现两个集合的交4void combine()实现两个集合的并5void subtract()实现两个集合的差6void main实现集合的交、并、差 三、系统关键代码下面详细地介绍一下第二部分中列出的各个函数。 3.1利用数组存入集合的元素void input( int a , int b , int m , int n) int i,j; printf(Array a:); for(i=0;im;i+) scanf(%d ,&ai); printf(Array b:); for(j=0;jn;j+) scanf(%d,&bj); 3.2系统功能菜单void meun()printf(1.实现两个集合的交 2.实现两个集合的差 3.实现两个集合的并 n”); 3.3实现两个集合的交int intersect(int a ,int b ,int c , int m,int n)/*括号里面一定要有主函数传递和接收的数组(不要忘了数组c )不然主函数和被调函数之间搭建不起联系,数组也不能传递*/ int i,j,k=0; /*下面的嵌套循环实现 进行一次if语句的内层循环 将两个集合中重复的一个元素存入数组c中(既交集中) 外层循环进行完两个集合中的共同元素被全部存入交集c中*/ /*a和b的交集*/ for(i=0;im;i+)for(j=0;jn;j+)if(ai=bj) ck=ai; k+; printf(a和b的交集:);for(i=0;ik;i+)printf(%d ,ci);return k; 3.4实现两个集合的差 int subtract(int a ,int b ,int c ,int m,int n) int i,j,d,k; k=intersect(a,b,c,m,n); printf(k=%dn ,k);/*下面的两个嵌套循环实现进行一次实现if条件循环的内层循环删除 一个两个数组中的共同元素(数组b的元素被重新赋值改变) 外层循环进行完共同元素删除完*/ /*差集b-a*/ for(i=0;ik;i+)d=0; for(j=0;jn-i;j+) /*j的范围很重要 如果j大于或者小于数组b的个数 结果都有可能错误*/ if(ci!=bj) bd=bj; d+; printf(差集b-a:); for(i=0;id;i+) /*i的范围很重要*/ printf(%d ,bi); /*差集a-b*/ for(i=0;ik;i+)d=0; for(j=0;jm-i;j+) /*j的范围很重要 如果j大于或者小于数组b的个数 运行结果都有可能错误*/ if(ci!=aj) ad=aj; d+; printf(差集a-b:); for(i=0;id;i+) /*i的范围很重要*/ printf(%d ,ai);return k;3.5实现两个集合的并 int combine(int a , int b , int c , int m, int n ) int i,j, k; k=subtract(a,b,c,m,n); printf(k=%d ,k); /*下面的两个for循环实现将两个集合的两个差集和一个交集中的元素合并到一个数组中,数组中的元素即两个集合并集中的所有元素*/ for(i=0,j=k;im-k,jm;i+,j+) cj=ai; /*通过对交集c重新赋值实现将两个集合的一个差集a与交集c的合并*/ for(i=0,j=m;in-k,jm+n-k;i+,j+) cj=bi; /*通过对差集a和交集c的并集c的重新赋值实现将两个集合的 差集a和b与交集c的合并*/ printf(a和b的并集:); for(i=0;im+n-k;i+) printf(%d ,ci); 3.6主函数int main() static int aN,bN,cN;int m,n,choice; /*m是数组a的元素个数,n是数组b的元素个数*/ printf(input m,n:);scanf(%d%d,&m,&n); input( a , b , m , n); meun( ); printf(please enter your choice:); scanf(%d,&choice); switch(choice) case 1 : intersect( a , b , c , m, n); break ; case 2 : subtract(a , b , c, m , n); break ; case 3: combine(a , b , c , m , n ); break ; 4 程序调试 将集合中的元素存入静态数组、显示菜单 图2. 选择实现集合的交的运行结果: 图3.实现集合交的功能 选择实现集合的差的运行结果:图4.实现集合差的功能 选择实现集合的并的运行结果:图5.实现集合并的功能五课程设计总结通过本学期的高级语言程序设计课程设计,我收获了很多。首先让我学会结合之前学过的c语言知识独立去思考如何去实现题目中的要求(运用静态数组实现集合的交、并、差运算),这个过程的同时实现了对我学过的c语言知识的梳理和连贯。然后让我学会了如何去找出一段程序中的错误。当我写的一个程序运行的结果错误时,我学会了把程序分成一小段一小段去运行排查,最终找到问题所在。通过检查这一小段错误程序,一遍遍的思考调试,最终运行成功。其次让我对数组的运用更加熟练。使我掌握了不同情况下如何对一个数组重新赋值以及函数之间的相互调用。再有通过程序的编译运行让我发现,然后纠正,最后掌握了自己编码很多细节上的问题。最后通过努力让我对运用静态数组实现集合的交、并、差运算有了熟练的掌握。 很感谢老师的悉心教导,平时没有注意到很多细节性的问题,老师能够耐心 细心的进行引导,让我的能力得到很大提升。评分标准程序(60分)正确性(20)完成全部功能且经教师测试无错误(20)要求学生有一定的编程能力。程序功能不符合题目要求,或者程序完全不能运行者,按不及格处理。完成全部主要功能但对特殊测试样例有错误(15)完成要求功能的1/2以上(10)不合题目要求或者不能运行或者完成功能低于要求的1/2(-100)界面友好性(10分)友好,易于操作(6-10分)要求学生要能从用户的角度考虑问题不友好,难以操作(0-5分)回答问题情况(10)能回答出所有问题(10)根据学生回答问题的多少给予一定的分数;一问三不知,按抄袭处理。能回答部分问题(5)一问三不知(-100)注释丰富程度(10)较多(6-10)要求学生对主要的功能语句应该给出注释少许(0-5)题目难易程度(10)难(10分)在命题时已经给出了题目的难易程度易(0分)报告(30)语言表达能力(10)行文流畅(6-10)要求报告要有一定的文字描述,不能只是程序、图表,语句要通顺,错别字要少,逻辑要清楚不太通顺且较多错别字(0-5)版面(20)版面整洁,布局合理(11-20)要求各级标题的标号具有层次性;图表要在同一页内显示;图表要有图号图名表号表名;文字的大小要具有层次性等版面混乱,布局不合理(0-10)创新性(10分)学生的程序功能超越了课程设计的基本要求,新增功能能让指导教师感到具有创新性的程度(0或者10分)该项分数应只给予特别优秀的学生,不超过所指导学生的5%总分五级制成绩教 师 签 名: 批 改 日 期: 年 月 日附加完整代码:#include #define N 50void input( int a , int b , int m , int n) int i,j; printf(Array a:); for(i=0;im;i+) scanf(%d ,&ai); printf(Array b:); for(j=0;jn;j+) scanf(%d,&bj); void meun()printf(1.实现两个集合的交 2.实现两个集合的差 3.实现两个集合的并 n);int intersect(int a,int b,int c, int m,int n)/*括号里面一定要有主函数传递和接收的数组(不要忘了数组c )不然主函数和被调函数之间搭建不起联系,数组也不能传递*/ int i,j,k=0; /*下面的嵌套循环实现 进行一次if语句的内层循环 将两个集合中重复的一个元素存入数组c中(既交集中) 外层循环进行完两个集合中的共同元素被全部存入交集c中*/ /*a和b的交集*/ for(i=0;im;i+)for(j=0;jn;j+)if(ai=bj) ck=ai; k+; printf(a和b的交集:);for(i=0;ik;i+)printf(%d ,ci);return k; int subtract(int a,int b,int c,int m,int n) int i,j,d,k; k=intersect(a,b,c,m,n); printf(k=%dn ,k);/*下面的两个嵌套循环实现进行一次实现if条件循环的内层循环删除 一个两个数组中的共同元素(数组b的元素被重新赋值改变) 外层循环进行完共同元素删除完*/ /*差集b-a*/ for(i=0;ik;i+)d=0; for(j=0;jn-i;j+) /*j的范围很重要 如果j大于或者小于数组b的个数 结果都有可能错误*/ if(ci!=bj) bd=bj; d+; printf(差集b-a:); for(i=0;id;i+) /*i的范围很重要*/ printf(%d ,bi);/*差集a-b*/ for(i=0;ik;i+)d=0; for(j=0;jm-i;j+)/*j的范围很重要 如果j大于或者小于数组b的个数 运行结果都有可能错误*/ if(ci!=aj) ad=aj; d+; printf(差集a-b:); for(i=0;id;i+) /*i的范围很重要*/ printf(%d ,ai);return k; int combine(int a, int b, int c, int m, int n ) int i,j, k; k=subtract(a,b,c,m,n); printf(k=%d ,k); /*下面的两个for循环实现将两个集合的两个差集和一个交集中的元素合并到一个数组中,数组中的元素即两个集合并集中的所有元素*/ for(i=0,j=k;im-k,jm;i+,j+) cj=ai; /*通过对交集c重新赋值实现将两个集合的一个差集a与交集c的合并*/ for(i=0,j=m;in-k,jm+n-k;i+,j+) cj=bi; /*通过对差集a和交集c的并集c的重新赋值实现将两个集合的 差集a和b与交集c的合并*/ printf(a和b的并集:); for(i=0;im+n-k;i+) printf(%d ,ci); int main() static int aN,bN,cN;int m,n,choice; /*m是数组a的元素个数,n是数组b的元素个数*/ p

温馨提示

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

评论

0/150

提交评论