C语言编程

合并数组。①写函数intcom(int*a,int*b,int*c),实现将a和b指向的两个已按升序排列的数组(所有数组元素的值非0)中的元素合并成一个升序序列并保存在c... 合并数组。
① 写函数int com(int *a,int *b,int *c),实现将a和b指向的两个已按升序排列的数组(所有数组元素的值非0)中的元素合并成一个升序序列并保存在c指向的数组中,合并后的数组中不包含两个数组中相同的数,并将两个数组中相同的数的个数作为com函数的返回值。
② 编写main函数,声明3个整型数组,并对其中的两个数组用给出的测试数据初始化(各数组长度利用宏定义规定);调用函数com实现数组的合并,且不包含两个数组中相同的数,合并后存入第三个数组中;将合并后的数组及两个数组中相同的数的个数输出。
【测试数据】
数组a:3 6 7 18 23 33 35 43 48 78
数组b:2 7 13 21 33 37 48 50 58 67
【运行结果】
2 3 6 13 18 21 23 35 37 43 50 58 67 78
count=3
展开
 我来答
日出日落三十天
2016-05-05 · TA获得超过447个赞
知道小有建树答主
回答量:383
采纳率:100%
帮助的人:213万
展开全部
#include "stdio.h"
#include "algorithm.h"
#define M 10
#define N 10

int com(int *a, int *b, int *c)
{
int i, j;
int count = 0;
for (i = 0; i < M; i++)
c[i] = a[i];
for (j = 0; j < N; j++)
c[i++] = b[j];

sort(c, c + (M + N));

for (i = 0; i < M + N - 1; i++)
{
if (c[i] == c[i + 1])
{
count++;
for (j = i; j < M + N - 1; j++)
c[j] = c[j + 2];
}
}
return count;
}

int main(void)
{
int a[M] = { 3, 6, 7, 18, 23, 33, 35, 43, 48, 78 };
int b[N] = { 2, 7, 13, 21, 33, 37, 48, 50, 58, 67 };
int c[M + N] = { 0 };
int count = 0, i;
count = com(a, b, c);
for (i = 0; i < M + N - 2 * count; i++)
printf("%d ", c[i]);
printf("\ncount=%d ", count);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式