⑴ c语言求集合运算
可以用线性表模拟集合,把两个线性表中一样的数提取出来就是交集,所有元素组成的就是并集,还可以用C++重载运算符实现+就求并集之类的。
⑵ c语言 集合的差,交,并,笛卡尔积的运算。例如A={2,3,4,5,6,7,8}B={2,3,4,5,11,25}
交:C={2,3,4,5} 就是既属于A的又属于B的那部分
并:C = {2,3,4,5,6,7,8,11,25} 两个集合的整合去掉重复的。A+B-AB(AB:公共部分)
差:C= {6,7,8}就是属于A但是不属于B的那部分
笛卡尔乘积:这个得出的集合就多了:举个例子。。假设集合A={a,b},集合B={c,d}则两个集合的笛卡尔积为{(a,c),(a,d),(b,c),(b,d)}
⑶ C语言 集合运算
Deletetable函数有两个地方把pcollelm写成了collelm
Addition函数体第4行没加分号
Addition函数中3次调用AppendToTable时都写了3个参数,但AppendToTable只声明了2个参数
Multiply的返回类型写了collelm,应该是pcollelm
Multiply的函数参数是x,y,但函数体里面写的是a,b
Multiply里调用AppendToTable时,p的前面不用写类型
main的第3行,p=collp;改成p=&collp;
main里面case 2调用Deletetable时,第一个参数是Collelm类型的colla,但Deletetable对应的参数类型是Collelm *
⑷ 用c语言编写两个集合的运算
记得采纳哦
集合
#include "stdafx.h"
#include <stdio.h>
int fun(int a,int M[])//判断元素是否在集合里 在返回1 不在返回0
{
int i=0;
for(i=0;M[i]!=0;i++)
if(a==M[i]) return 1;
return 0;
}
void get(int M[])//输入集合元素
{
int i=0;
printf(" ");
do
{
scanf("%d",&M[i++]);
}
while(M[i-1]!=0);
}
void print(int M[])//打印集合
{
int i=0;
printf(" ");
while(M[i]!=0)
{
printf("%d ",M[i++]);
}
printf(" ");
}
void clear(int M[])
{
int i=0;
do
{
M[i++]=0;
}
while(M[i]!=0);
}
void fun_sum(int A[],int B[],int C[])//集合A和集合B的并集
{
int i,j;
for(i=0;A[i]!=0;i++)
{
C[i]=A[i];
}
for(j=0;B[j]!=0;j++)
{
if(!fun(B[j],C)) C[i++]=B[j];
}
}
void fun_sub(int A[],int B[],int C[])//集合A和集合B的差集
{
int i,j=0;
for(i=0;A[i]!=0;i++)
{
if(!fun(A[i],B)) C[j++]=A[i];
}
}
void fun_J(int A[],int B[],int C[])//集合A和集合B的交集
{
int i,j=0;
for(i=0;A[i]!=0;i++)
{
if(fun(A[i],B)) C[j++]=A[i];
}
}
int main(int argc, char* argv[])
{
int A[50]={0},B[50]={0},C[100]={0};
printf("请输入集合A以0结束 ");
get(A);
printf("请输入集合B以0结束 ");
get(B);
fun_sum(A,B,C);
printf("集合A与集合B的并: ");
print(C);
clear(C);
fun_sub(A,B,C);
printf("集合A与集合B的差: ");
print(C);
clear(C);
fun_J(A,B,C);
printf("集合A与集合B的交: ");
print(C);
return 0;
}
⑸ 用C语言实现集合的并集
用两个数组表示集合元素
对于AUB=C
先把A的数据 复制到C里面
然后 遍历B数组,每个元素和A对比,如果存在 则略过,否则添加到C中。
等到的C
即为并集
⑹ c语言编程,集合
动态规划.
#include<stdio.h>
/*#include<stdlib.h>*/
#include<memory.h>
#defineN5050
intmain(intargc,char*argv)
{
intd[N];
intn,s;
while(scanf("%d",&n)!=EOF){
s=n*(n+1)>>1;
if(s&1){
printf("0 ");
}
else{
s=s>>1;
inti,j;
memset(d,0,N*sizeof(d[0]));
d[0]=1;
for(i=1;i<=n;i++){
for(j=s;j>=i;j--){
d[j]=d[j]+d[j-i];
}
}
printf("%d ",d[s]>>1);
}
}
return0;
}
⑺ c语言里面有集合吗
你好,不清楚你说的集合是什么概念,但是c语言里面有数组,表示形式和集合很相像,你可以研究研究。学c语言会学到的。加油!
中国物联网校企联盟技术部
⑻ 怎样用语言c语言实现集合的合并,交集
通过你描述的问题,正确的交集代码如下:
void
bing(char
a[],char
b[],int
m,int
n)
{
char
d[400];
int
i=0,j=0,s=m;
for(i=0;i<m;i++)
d[i]=a[i];
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
if(b[i]==a[j])
break;
}
if(j==m)
d[s++]=b[i];
}
cout<<"集合并集是:";
for(i=0;i<s;i++)
cout<<d[i]<<"
";
}
⑼ c语言中集合的用法
嘿,在C语言中,没有“集合”的概念。在pascal语言中,有“集合”的概念。
⑽ C语言集合类型逻辑类型
C语言中既没有逻辑类型也没有集合类型。
在C++和VB里有逻辑类型,C++中为bool,VB中为
Boolean。其值有true和
false两种,true代表真,false代表假。
C语言没有逻辑类型,如果要表示逻辑类型,只能用整型值代替。0代表false,非0代表true。
集合是一种元素间无序的类型。C语言没有集合类型。
(注意:数组不算集合类型,因为数组元素之间有前驱和后继关系。)