集合的运算

简介: 集合的运算

集合的运算

#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;
}


目录
相关文章
|
10天前
|
开发者
除了交集运算,Set 类型还可以用于哪些数据结构的操作?
【10月更文挑战第30天】`Set`类型在数据结构操作方面提供了丰富的功能和便利,能够帮助开发者更高效地处理各种数据集合相关的任务,提高代码的简洁性和性能。
|
10天前
|
算法 JavaScript 前端开发
使用 Set 类型实现数组的交集运算
【10月更文挑战第30天】使用 `Set` 类型实现数组的交集运算是一种常见且有效的方法,它为我们处理数据集合的运算提供了一种便捷的途径。通过合理地运用这种方法,我们可以轻松地实现数组的交集计算,并在各种编程任务中灵活运用。
|
6月前
|
Python
数组运算
【5月更文挑战第6天】数组运算。
46 1
|
存储 算法 数据处理
数据的表示及运算
一、数据的表示及运算 数据的表示和运算是计算机系统中非常重要的概念,它们决定了计算机如何处理和操作数据。 1. 数据的表示:计算机使用二进制(0和1)来表示和存储数据。二进制是一种只有两个状态的编码方式,可以通过开关电路的开和关来表示0和1。计算机将二进制编码与不同的数据类型关联,例如整数、浮点数、字符等。 2. 整数运算:计算机可以对整数进行基本的算术运算,包括加法、减法、乘法和除法。这些运算是通过电子电路中的逻辑门实现的,逻辑门可以对二进制数进行逻辑运算和移位操作。 3. 浮点数运算:计算机可以进行浮点数的运算,浮点数是一种用于表示带有小数部分的数值的数据类型。浮点数运算涉及到浮点数的表示
78 0
数组与集合的转换
数组与集合的转换
57 0
|
6月前
|
算法 前端开发
数组归约运算
数组归约运算
36 0
第3章 数组与矩阵——3.1 数组运算(2)
第3章 数组与矩阵——3.1 数组运算(2)
第3章 数组与矩阵——3.1 数组运算(1)
第3章 数组与矩阵——3.1 数组运算(1)
|
人工智能 算法
数组形式的整数加法
数组形式的整数加法
92 0