两个集合求交集并集差集程序出错,错误点也列在下面了


typedef struct

{ int data[MaxSize];
  int length;
}Set;

void cset(Set &s,int a[],int n)
{ for(int i=0;i<n;i++)
      s.data[i]=a[i];
   s.length=n;
}

void dispset(Set s)
{ for(int i=0;i<s.length;i++)
      printf("%d",s.data[i]);
  printf("\n");
}
int inset(Set s,int e)
{ for(int i=0;i<s.length;i++)
      if(s.data[i]==e)
          return 1;
  return 0;
}

void add(Set s1,Set s2,Set &s3)
{  int i;
   for(i=0;i<s1.length;i++)
       s3.data[i]=s1.data[i];
   s3.length=s1.length;
   for(i=0;i<s2.length;i++)
       if(!inset(s1,s2.data[i]))
       { s3.data[s.length]=s2.data[i];
         s3.length++;
       }
}
void sub(Set s1,Set s2,Set &s3)
{ s3.length=0;
  for(i=0;i<s1.length++;i++)
      if(!inset(s2,s1.data[i]))
      { s3.data[s3.length]=s1.data[i];
        s3.length++;
      }
}
void intersection(Set s1,Set s2,Set &s3)
{ s3.length=0;
  for(i=0;i<s1.length++;i++)
      if(inset(s2,s1.data[i]))
      { s3.data[s3.length]=s1.data[i];
        s3.length++;
      }
}
void main()
{ int a[]={1,9,0,2,3,4};
  int b[]={9,3,4};
  Set s1,s2,s3;
  cset(s1,a,5);
  cset(s2,b,4);
  printf("集合s1:");dispset(s1);
  printf("集合s2:");dispset(s2);
  add(s1,s2,s3);
  printf("集合s1和s2的并集:");dispset(s3);
  sub(s1,s2,s3);
  printf("集合s1和s2的差集:");dispset(s3);
  intersection(s1,s2,s3);
  printf("集合s1和s2的交集:");dispset(s3);
}

F:\c++\数据结构.cpp(2) : error C2065: 'MaxSize' : undeclared identifier
F:\c++\数据结构.cpp(2) : error C2057: expected constant expression
F:\c++\数据结构.cpp(2) : warning C4200: nonstandard extension used : zero-sized array in struct/union
F:\c++\数据结构.cpp(3) : error C2229: struct '__unnamed' has an illegal zero-sized array
F:\c++\数据结构.cpp(14) : error C2065: 'printf' : undeclared identifier
F:\c++\数据结构.cpp(31) : error C2065: 's' : undeclared identifier
F:\c++\数据结构.cpp(31) : error C2228: left of '.length' must have class/struct/union type
F:\c++\数据结构.cpp(37) : error C2065: 'i' : undeclared identifier

报错写的很明白了
你用了未定义的MaxSize,这里应该是个常量
没导包,所以printf失效
33行写了个s,这个s你没定义过
37行for循环内的循环变量i没有初始化
有帮助望采纳