用C语言编写集合子集的程序怎么写?

Python043

用C语言编写集合子集的程序怎么写?,第1张

如下:#include #define AMAX   6 static char A[AMAX] = {'a','b','c','d','e','f'}void print(int len)//len为子集的大小,即元素的个数 { int i,j,kj=k=0for(i=0i { if(AMAX-i for(j=0j { printf("%c ",A[i+j])} printf("\n")} return} int main() { int ifor(i=1i=AMAXi++) { print(i)} return 0}

子集是一个数学概念,在c语言中的作用也非常大。

c语言是最常见的编程语言,是学习好所有编程语言的基础。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

#include<iostream> 

#include<string>

#include<fstream>

#include<conio.h>

using namespace std

//定义集合的最大数量,可以自己修改

#define MAX_COUNT 100    

//集合使用数组来保存

int SetA[MAX_COUNT]

int SetB[MAX_COUNT]

int CountA = 0   //集合A的长度

int CountB = 0   //集合B的长度

///函数Contains,判定集合是否包含一个数

///@param set, 集合

///@param count, 集合Set中的元素个数

///@param value, 是否包含的值

///@return set包含value,返回true,否则返回false

bool Contains(int set[], int count, int value)

{

 for(int i = 0 i < count i++)

  if(value == set[i])

   return true

 return false

}

//输入一个集合

void InputSet(int set[], int &count)

{

 string s

 //读取这一行

 getline(cin, s)

 int i = 0

 while(i < s.length() )

 {

  int spacePos = 0

  spacePos = s.find(' ', i)      //查找空格下一个空格的位置

  if(spacePos < 0 || spacePos >= s.length() - 1)    //如果没有空格或者空格超出了字符串范围,跳出循环

   break

  string temp = s.substr(i, spacePos - i)        

  if(temp == "")                                  //如果字符串为空,执行下一条

   continue 

  int value = stoi(temp)

  if(!Contains(set, count, value))                //如果集合中已经包含此数字了,就不再添加

   set[count++] = value

  i = spacePos + 1

 }

 //读取最后一个数

 string temp = s.substr(i, s.length() - i)

 int value = stoi(temp)

 if(!Contains(set, count, value))

  set[count++] = value

}

//判断是为setB是否为setA的子集

bool IsSubSet(int setA[], int countA, int setB[], int countB)

{

 for(int i = 0 i < countB i++)

  if( !Contains(setA, countA, setB[i]))

   return false

 return true

}

void main()

{

 cout<<"注意:只能输入整数,并且数字之间以空格隔开。"<<endl<<endl

 cout<< "请输入集合A:" <<endl

 InputSet(SetA, CountA)

 cout<< "请输入集合B:" <<endl

 InputSet(SetB, CountB)

 cout<<endl

 cout<<"集合A和集合B比较结果"<<endl

 if(IsSubSet( SetA, CountA, SetB, CountB))

  cout<<"集合B是集合A的子集"<<endl

 else

  cout<<"集合B不是集合A的子集"<<endl

 cout<<endl

 cout<<"按任意键退出"<<endl

 getch()

}