集合的运算

简介: 集合的运算

集合的运算

#include <stdio.h>
#include <stdlib.h>
void print(int size, char arr[])
{
  if (size == 0) {
    printf("null");
  }
  for (int i = 0; i < size; i++) {
    printf("%c", arr[i]);
  }
  printf("\n");
}
int main()
{
  char U[] = { 'a','b','c','d','e','f','g','h' };
  char A[] = { 'a','b','c','g' };
  char B[] = { 'd','e','f','g' };
  char C[] = { 'a','c','f' };
  char D[] = { 'f','h' };
  int M = sizeof(A) / sizeof(A[0]);//计算A集合的大小
  int N = sizeof(B) / sizeof(B[0]);//计算B集合的大小
  int P = sizeof(C) / sizeof(C[0]);//计算C集合的大小
  int Q = sizeof(D) / sizeof(D[0]);//计算D集合的大小
  int R = sizeof(U) / sizeof(U[0]);//计算U集合的大小
  char E[100] = { '0' };
  char F[100] = { '0' };
  char G[100] = { '0' };
  char H[100] = { '0' };
  char I[100] = { '0' };
  char J[100] = { '0' };
  char K[100] = { '0' };
  char L[100] = { '0' };
  int size = 0;//标记结果集合的大小
  for (int i = 0; i < M; i++) {
    for (int j = 0; j < N; j++) {
      if (A[i] == B[j]) {
        E[size] = A[i];
        size++;
        break;
      }
    }
  }
  printf("A∩B    :");
  print(size, E);
  int Size = 0;
  for (int i = 0; i < size; i++) {
    int find = 0;
    for (int j = 0; j < P; j++) {
      if (E[i] == C[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      K[Size] = E[i];
      Size++;
    }
  }
  printf("(A∩B)-C:");
  print(Size, K);
  size = 0;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < P; j++) {
      for (int k = 0; k < Q; k++) {
        if ((B[i] == C[j]) && (C[j] == D[k]))
        {
          G[size] = B[i];
          size++;
        }
      }
    }
  }
  printf("B∩C∩D  :");
  print(size, G);
  size = 0;
  for (int i = 0; i < N; i++) {
    F[size] = B[i];
    size++;
  }
  for (int i = 0; i < P; i++) {
    int find = 0;
    for (int j = 0; j < N; j++) {
      if (C[i] == B[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      F[size] = C[i];
      size++;
    }
  }
  printf("B∪C    :");
  print(size, F);
  Size = 0;
  for (int i = 0; i < M; i++) {
    for (int j = 0; j < size; j++) {
      if (A[i] == F[j]) {
        J[Size] = A[i];
        Size++;
      }
    }
  }
  printf("A∩(B∪C):");
  print(Size, J);
  Size = 0;
  for (int i = 0; i < size; i++) {
    L[Size] = F[i];
    Size++;
  }
  for (int i = 0; i < M; i++) {
    int find = 0;
    for (int j = 0; j < size; j++) {
      if (A[i] == F[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      L[Size] = A[i];
      Size++;
    }
  }
  printf("A∪B∪C  :");
  print(Size, L);
  size = 0;
  for (int i = 0; i < R; i++) {
    int find = 1;
    for (int j = 0; j < M; j++) {
      if (U[i] == A[j]) {
        find = 0;
        break;
      }
    }
    if (find == 1) {
      H[size] = U[i];
      size++;
    }
  }
  printf("A的补集:");
  print(size, H);
  size = 0;
  for (int i = 0; i < P; i++) {
    int find = 0;
    for (int j = 0; j < Q; j++) {
      if (C[i] == D[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      I[size] = C[i];
      size++;
    }
  }
  printf("C-D    :");
  print(size, I);
  Size = 0;
  return 0;
}


目录
相关文章
|
前端开发 JavaScript 测试技术
深入理解Web3:构建去中心化应用的未来
本文将探讨Web3技术的核心原理及其在构建去中心化应用(DApps)中的应用。我们将从Web3的定义开始,深入到其背后的区块链技术,智能合约,以及如何通过使用现代编程语言和框架实现去中心化应用的开发。此外,本文还将探讨当前Web3生态系统中面临的挑战和机遇,为读者提供一个全面的Web3技术概览,旨在启发开发者和技术爱好者探索去中心化世界的无限可能。
|
6月前
|
人工智能 算法
Runway Gen-4:AI视频生成新纪元!高保真特效一键生成影视级内容
Runway Gen-4是新一代AI视频生成模型,通过参考图和文字指令即可生成具有物理真实感、叙事连贯性的高质量视频内容,支持与实拍素材无缝融合。
397 9
Runway Gen-4:AI视频生成新纪元!高保真特效一键生成影视级内容
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
804 2
|
12月前
|
Rust 安全 Java
探索Rust在系统编程中的崛起
Rust 是一种由 Mozilla 研究院开发的现代系统编程语言,以其在安全性、并发性和内存管理方面的优势,逐渐成为开发者的新宠。Rust 提供内存安全保证且性能媲美 C/C++,支持跨平台开发,并具备强大的并发编程工具。本文将介绍 Rust 的核心优势、工作原理及实施方法,探讨其在系统编程中的崛起及其面临的挑战。尽管 Rust 学习曲线较陡,但其广泛的应用场景和不断壮大的社区使其成为构建高性能、安全应用的理想选择。
|
API 网络安全
天气查询
【10月更文挑战第02天】
455 1
|
设计模式 消息中间件 安全
面试官:说说读写锁的实现原理?
面试官:说说读写锁的实现原理?
212 1
|
数据采集 自然语言处理 数据挖掘
【NLP-新闻文本分类】1 数据分析和探索
文章提供了新闻文本分类数据集的分析,包括数据预览、类型检查、缺失值分析、分布情况,指出了类别不均衡和句子长度差异等问题,并提出了预处理建议。
234 1
|
机器学习/深度学习 人工智能 自然语言处理
能自动查找各种漏洞,专用于网络安全的AI Agent
【7月更文挑战第3天】研究表明,大型语言模型(LLM)可应用于网络安全,自动发现和利用漏洞,包括零日漏洞。多Agent系统中,HPTSA规划任务,其他Agent执行具体工作,提升发现和应对漏洞的效率。然而,LLM的复杂性可能导致可解释性、可控性问题,且系统鲁棒性、泛化能力和安全性仍需加强。[链接: arxiv.org/abs/2406.01637]
488 1
|
数据采集 弹性计算 供应链
阿里云服务器包年包月和按量付费有啥区别?
阿里云服务器付费模式包括包年包月、按量付费和抢占式实例。包年包月适合长期稳定使用,价格优惠,支持备案;按量付费适合短期或波动需求,按小时计费,不支持备案;抢占式实例价格低至9折,但可能随时被释放,适合无状态应用。选择时应考虑业务需求的稳定性和成本效益。
268 0
|
机器学习/深度学习 自然语言处理 监控
AIGC带来内容安全新挑战
【1月更文挑战第9天】AIGC带来内容安全新挑战
342 1
AIGC带来内容安全新挑战