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 展开
① 写函数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 展开
1个回答
展开全部
#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;
}
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询