课程设计报告集合的交并差运算Word文件下载.docx
- 文档编号:20375740
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:12
- 大小:102.80KB
课程设计报告集合的交并差运算Word文件下载.docx
《课程设计报告集合的交并差运算Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计报告集合的交并差运算Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
一、系统开发的背景
为了演示执行集合的交、并和差运算的程序,因此设计了这个程序。
二、系统分析与设计
(一)系统功能要求
可以对键盘输入的集合元素进行反序输出,然后对输入的集合进行交集,并集,差集的运算。
1、输入集合1中的元素;
2、输入集合2中的元素;
3、执行交集、并集、差集运算;
(二)系统模块结构设计
通过对系统功能的分析,集合交并差系统功能如图1所示。
图1集合的交并差运算系统功能图
通过上图的功能分析,把整个系统划分为3个模块:
1、集合的交集运算,该模块主要实现:
找出集合1与集合2中相同的元素并输出,借助函数voidjiao()来实现;
2、集合的并集运算,该模块主要实现:
将集合1与集合2中的元素集中于一起,并且全部输出,借助函数voidbing()来实现;
3、集合的差集运算,该模块主要实现:
集合1减去集合2输出所得结果;
集合2减去集合1输出所得结果,借助函数voidcha()来实现。
三、系统的设计与实现
(一)集合的交集运算:
voidjiao()
分析:
首先输出集合1与集合2的元素,然后输出集合1与集合2中相同的元素。
流程图如图2所示。
图2:
jiao(pointer*head1,pointer*head2,pointer*head3)流程图
该模块的具体代码如下所示。
voidjiao(pointer*head1,pointer*head2,pointer*head3){
pointer*p1,*p2,*p3;
p1=head1->
link;
while(p1!
=NULL)
{
p2=head2->
while((p2!
=NULL)&
&
(p2->
data!
=p1->
data))
p2=p2->
}
if((p2!
data=p1->
{
p3=(pointer*)malloc(sizeof(structpointer));
p3->
data;
link=head3->
head3->
link=p3;
}
p1=p1->
}
(二)集合的并集运算:
voidbing()
首先输出集合1与集合2的元素,然后输出集合1与集合2中的全部元素。
流程图如图3所示。
图3:
bing(pointer*head1,pointer*head2,pointer*head3)流程图
voidbing(pointer*head1,pointer*head2,pointer*head3)
pointer*p1,*p2,*p3;
p1=head1->
p3=(pointer*)malloc(sizeof(structpointer));
p3->
head3->
p1=p1->
while(p2!
while((p1!
(p1->
=p2->
if(p1==NULL)
data=p2->
(三)集合的差集运算:
voidcha()
首先输出集合1减去集合2的结果,然后输出集合2减去集合1中的结果。
流程图如图4所示。
图4:
cha(pointer*head1,pointer*head2,pointer*head3)流程图
voidcha_1(pointer*head1,pointer*head2,pointer*head3){
if(p2==NULL)
四、系统测试
(一)测试main()函数
测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的结果。
图5系统界面
(二)测试voidjiao()函数
测试该函数执行集合交集运算的执行结果。
图6交集执行结果
(三)测试voidbing()函数
测试该函数执行集合并集运算的执行结果。
图7并集执行结果
(四)测试voidcha()函数
图8差集执行结果
五、总结
系统完成了执行计算集合的交集、并集以及差集的功能。
系统虽然完整运行,但也有不足。
系统的设计未能考虑到集合元素的唯一性,从键盘输入的集合元素在原样输出时,未能将重复元素剔除;
再者,系统未能实现选择性操作,即输入集合1与集合2中的元素以后,按Enter便输出交集、并集与差集的全部结果。
我的收获:
通过课程设计,我学习到了许多内容。
首先是对已学过的内容的尤其是上学期C++有了更深入的理解。
其次,在程序编译过程中,我遇到了许许多多的问题,这些问题大多数都是小问题,主要是对问题思考的不够全面的结果。
但是在自己的反复检查、实验,以及老师的帮助下,这些问题都一一解决了。
而在解决问题的过程中,我能够了解到我设计中的不足之处。
程序编辑过程中,我也认识到了自己的不足,对已学过的知识是有所理解,也能够合理地运用,但对细节方面有所忽略,这也正是刚开始时发现程序无法正常运行却不知错在哪的原因。
因此这让我懂得了,在学习的过程中要认真仔细。
最后,程序设计让我将以学过的知识综合运用,我感觉编译程序确实很有意思。
因为它不仅是一门课程,也是一门语言,我们要学好这门语言,就要了解这门语言的“语法结构”,只有把话说清楚了,才能明白意思;
也只有把“话”说正确了,程序才能执行。
六、附件(代码、部分图表)
#include<
stdio.h>
stdlib.h>
typedefstructpointer{
chardata;
structpointer*link;
}pointer;
voidreaddata(pointer*head){
pointer*p;
chartmp;
printf("
\t(输入'
0'
表示结束)\n"
);
\t请输入数据:
\n"
scanf("
%c"
&
tmp);
while(tmp!
='
)
p=(pointer*)malloc(sizeof(structpointer));
p->
data=tmp;
link=head->
head->
link=p;
voiddisp(pointer*head){
p=head->
while(p!
p->
data);
p=p->
voidbing(pointer*head1,pointer*head2,pointer*head3){
voidcha_1(pointer*head1,pointer*head2,pointer*head3){
voidcha_2(pointer*head1,pointer*head2,pointer*head3){
main(){
pointer*head1,*head2,*head3;
head1=(pointer*)malloc(sizeof(structpointer));
head1->
link=NULL;
head2=(pointer*)malloc(sizeof(structpointer));
head2->
head3=(pointer*)malloc(sizeof(structpointer));
printf("
★★★★★★★★★★集合的交、并、差运算系统★★★★★★★★\n"
★==================请根据提示进行操作================★\n"
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n"
★=================下面开始执行操作步骤===============★\n"
\t请输入集合1:
readdata(head1);
\t请输入集合2:
readdata(head2);
集合1是:
disp(head1);
\n集合2是:
disp(head2);
\n集合1与集合2交的值为:
jiao(head1,head2,head3);
disp(head3);
\n集合1与集合2并的值为:
bing(head1,head2,head3);
\n集合1与集合2差的值为:
cha_1(head1,head2,head3);
\n集合2与集合1差的值为:
cha_2(head1,head2,head3);
getch();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 集合 交并 运算
![提示](https://static.bdocx.com/images/bang_tan.gif)