C语言编程用数组编写程序求集合的并

纯数字的,就是集合A和集合B求A并B... 纯数字的,就是集合A和集合B求A并B 展开
 我来答
饺囊松方bN
2012-06-19 · 超过10用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:20.5万
展开全部
纯数字组成的数组还是有字符串呢?
追问
纯数字的,就是集合A和集合B求A并B
追答
你要输入的集合规模确定吗?下面先给你一个规模为m和n的吧
#include
void main()
{
int a[100],b[100]; //如果是实数就使用float类型,如果你要输入的数组更大,就将100换成更大的数
int c[200]; //用来存放结果
int i,j,k,m,n; //m n 可以设置为你数组的规模
int temp; //定义一个交换时的中间量
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
//这里应该进行一下排序,这样在求并的时候方便一些,既然是集合应该没有重复的元素
for(i=0;i<m;i++)
{
for(j=i;j<m;j++)
{
if(a[j]<a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(b[j]<b[i])
{
temp=b[j];
b[j]=b[i];
b[i]=temp;
}
}
}
//下面进行比较,思路是,从小到大排列,如果a数组当前元素比b的当前元素小,则将a存入c,取a的下一个元素与b的当前元素比较,同理b比a小时,b取下一个,相等则同时取下一个
i=0;
j=0;
k=0;
while(1)
{
if(a[i]<b[j])
{
c[k++]=a[i];
i++;
if(i==m)
break;
}
else if(a[i]==b[j])
{
c[k++]=a[i];
i++;
j++;
if(i==m||j==n)
break;
}
else
{
c[k++]=b[j];
j++;
if(j==n)
break;
}
}

if(i!=m)
{
while(i!=m)
{
c[k++]=a[i++];
}
}
if(j!=n)
{
while(j!=n)
{
c[k++]=b[j++];
}
}
for(i=0;i<k;i++)
{
printf("%d ",c[i]);
}
printf("\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式