数据结构实验1  集合的交、并、差

一、实验内容

(1)实验目的

通过该实验,让学生复习巩固C语言中的循环结构、循环控制条件、分支结构和数组/链表、函数的调用等有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。

(2)实验内容

通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。

(3)实验要求

从程序完善性上考虑,集合元素输入时,要有检查元素重复的功能,每个集合中不允许有重复的元素。集合可以用数组也可以用链表存储。

实现交、并、差运算时,分别把代码写成函数的形式,即实现交运算的函数,实现并运算的函数,实现差运算的函数,在主函数中分别调用三个函数。

使用菜单形式对应各个操作,应允许用户反复查看结果,想结束程序时,输入负数结束,使其编成一个完整的小软件。

(4)验收/测试用例

输入: A={1,2,3,4,5}        B={3,4,5,6,7}

要注意输入的过程中,每输入一个元素都要检查输入的这个元素是否和前面的元素重复,如果重复,要求用户重新输入当前元素。

验收测试时要测试这种重复的情况。

输出 A交B={3, 4, 5} , A并B={1,2,3,4,5,6,7} , A-B={1, 2}。

菜单示例:

1---输入集合A和B

2---求集合A交B

3---求集合A并B

4---求集合A-B

5---输出集合A,B

退出,输入一个负数!

二、运行效果截图

三、代码实现

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;int jiheA();
int jiheB();
int jiao();
int bing();
int cha();int shuzuA[100];//定义全局变量,数组A
int shuzuB[100];//数组B
int i=0;//数组A的元素下标
int m=0;//数组B的元素下标 int main()
{
int n=1;
while(n)
{int select;cout<<"author---Henan University.software engineering.李思佳"<<endl;cout<<"1---输入集合A和B"<<endl;cout<<"2---求集合A交B"<<endl;cout<<"3---求集合A并B"<<endl;cout<<"4---求集合A-B"<<endl;cout<<"5---输出集合A,B"<<endl;cout<<"退出,输入一个负数!"<<endl;cout<<"请输入指令:";cin>>select; switch(select)
{case 1:system("cls");cout<<"请输入集合A和B"<<endl;jiheA();jiheB();break;case 2:system("cls");cout<<"集合A交B为:"<<endl;jiao();break;case 3:system("cls");cout<<"集合A并B为:"<<endl;bing();break;case 4: system("cls");cout<<"集合A-B为:"<<endl;cha();break;case 5: system("cls");cout<<"集合A为:"<<endl;for(int k=0;k<i;k++){cout<<shuzuA[k]<<" ";}cout<<endl;cout<<"集合B为:"<<endl;for(int k=0;k<m;k++){cout<<shuzuB[k]<<" ";}cout<<endl;cout<<endl;break;default:system("cls");if(select<0){n=0;cout<<"已经退出程序,欢迎下次使用!"<<endl;break;}
}}return 0;
}//输入集合A
int jiheA()
{int num;cout<<"请输入集合A,直到输入一个负数为止:"<<endl;while(scanf("%d",&num)>0 && getchar()!='\n'){ i++;      if(i==1)  {shuzuA[0]=num;}   else{   for(int j=0;j<=i-2;j++){if(num!=shuzuA[j]){shuzuA[i-1]=num;}else{cout<<"输入元素重复,请重新输入集合A!"<<endl; cout<<endl;i=0;jiheA();}           }                   }           }
}//输入集合B
int jiheB()
{int num;cout<<"请输入集合B,直到输入一个负数为止:"<<endl;while(scanf("%d",&num)>0 && getchar()!='\n'){ m++;      if(m==1)  {shuzuB[0]=num;}                       else{   for(int j=0;j<=m-2;j++){if(num!=shuzuB[j]){shuzuB[m-1]=num;}else{cout<<"输入元素重复,请重新输入集合B!"; m=0;jiheB();}            }                   }           }   cout<<endl;
}//交函数
int jiao()
{for(int k=0;k<i;k++){for(int j=0;j<m;j++){if(shuzuA[k]==shuzuB[j]){cout<<shuzuA[k]<<" ";break;}}}cout<<endl;cout<<endl;
}//并函数
int bing()
{int t=0;for(int k=0;k<i;k++){cout<<shuzuA[k]<<" ";}for(int j=0;j<m;j++){for(int k=0;k<i;k++){if(shuzuB[j]!=shuzuA[k]){t++;}}if(t==i){cout<<shuzuB[j]<<" ";         }t=0;}     cout<<endl;   cout<<endl;
}
//差函数
int cha()
{int t=0;for(int j=0;j<i;j++){for(int k=0;k<m;k++){if(shuzuA[j]!=shuzuB[k]){t++;}}if(t==m){cout<<shuzuA[j]<<" ";}t=0;}cout<<endl;cout<<endl;
}

数据结构实验1 集合的交、并、差相关推荐

  1. 用c语言实现交并差算法,C语言实现集合的交,并,差

    C语言实现集合的交,并,差 作者:Raining_C      来源:http://blog.csdn.net/Raining_CN [问题描述] 编制一个能演示执行集合的并.交和差运算的程序 [基本 ...

  2. (案例复盘)用抽象数据结构解决问题【集合的交、并、补】

    抽象数据类型仅仅是一个概念名词吗?你会借助抽象数据结构解决问题吗? 0,抽象数据类型 我们在学习数据结构时,一般情况下对于 "抽象数据类型" 这个知识点完全没有放在心上,最多把他当 ...

  3. 数据结构入门----集合的交、并、差

    一. 实验要求 通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交.并.差.从程序完善性上考虑,集合元素输入时,要有检查元素重复的功能.集合可以用数组也可以 ...

  4. c语言while求a和b的和程序,数据结构实验1_C语言_输入集合A和B求并集、交集、差集(while +...

    数据结构实验1_C语言_输入集合A和B求并集.交集.差集(while + 数据结构实验1_C语言_输入集合A和B求并集.交集.差集(while + switch + 功能函数)) 实验1 (1)实验目 ...

  5. 用java编程实现集合的交、并、差和补运算

    一.实验目的 掌握集合的交.并.差和补运算,并且使用计算机编程实现. 二.实验内容 通过编程实现求给定集合A和B的并集C(C=A∪B).交集C(C=A∩B).差集C(C=A-B).补集~C=E-C的运 ...

  6. 集合及集合的交,并与差

    HashSet<E>泛型类在数据组织上类似于数学上的集合,可以进行"交""并""差"等运算.HashSet<E>泛型 ...

  7. Generics的方法参数,Set 两集合进行并、交、差

    一.利用Generic方法参数,对两个集合进行并,交,差,并-交 1.union 并:1>在方法体增加一个集合,构造函数的初始化数据,用方法里传过来的集合. 2>再加一个集合addAll( ...

  8. 离散数学实验题目-集合

    离散数学实验报告 计算机科学与技术系 目录 第一章 实验概述 3 1.1 实验目的 3 1.2 实验内容 3 1.3 实验环境 3 第二章 实验原理和实现过程 4 2.1 实验原理 4 2.2 实验过 ...

  9. MySQL中实现并、交、差

    简介 sql叫做结构化查询语言,本质利用的就是关系代数中的操作,比如常用的并.交.差.投影.选择等操作. 其中并.交.差是常用的操作,本文就看看MySQL中的sql语言是怎么提供对应的关系代数操作的. ...

  10. 数据结构实验:内部排序算法的性能分析

    文章目录 前言 一.问题描述 二.问题分析 三.实验结果及分析 (1)实验数据描述 (2)实验结果 (3)性能分析 四.源代码 前言 记录下本学期的数据结构实验 本实验主要集中于比较几种内部排序算法 ...

最新文章

  1. 马歇尔·赫伯特:人工智能的前沿技术与实例分析
  2. BlueZ--内核层+应用层
  3. android 类加载器 DexClassLoader的用法,以及引出的插件架构
  4. C#实现文本文件合并
  5. 机器学习笔记:梯度下降
  6. GraphPad Prism 平均值的标准误差
  7. 前端技巧|vue双向绑定原理,助你面试成功
  8. 求素数: 一般线性筛法 + 快速线性筛法
  9. Spark Streaming源码分析 – DStream
  10. thinkphp中I方法
  11. 看完就懂webpack打包原理
  12. 操作系统-3.假设某多道程序设计系统中有供用户使用的内存100KB,打印机1台。系统采用可变分区方式管理内存:对打印机采用静态分配,并假设输入输出操作的时间忽略不计;采用最短剩余时间优先的进程调度算法
  13. java mail 注册邮箱的实现
  14. Matlab小波变换-音频去噪
  15. (专升本)Excel(自动填充数据)
  16. java 注解 entity_详解Java中的注解
  17. html横向滚动字幕代码,js文字横向滚动特效
  18. 剪辑师的基本素养--了解四种特写类型
  19. ros机器人编程实践(7)- turtlebot3仿真与脚本控制!!!史上最全,入门最简
  20. 实现Vibrator测试功能,短震动,长震动,频率震动,取消震动

热门文章

  1. vue3 three ts 全景图
  2. android车牌识别方法,基于Android、iOS系统的移动端车牌识别技术,实现高效、准确地录入...
  3. UCGUI的消息处理
  4. 怎么获取echarts需要的geoJson数据去渲染地图:以广州市白云区24镇街为例(内附资源)
  5. 百度热力图颜色说明_基于百度热力图的中国多中心城市分析|上海城市规划
  6. el-option默认选择
  7. 计算机二级未来教育押题准吗,计算机二级快速通关秘籍,21%的合格率真相原来是这样!...
  8. cad里面f命令用不了_南方CASS软件里CAD命令不能使用怎么办
  9. ofd文件怎么复制文字
  10. 如何制作双层PDF文档?其实只需简单一步!