75 lines
2.1 KiB
C
75 lines
2.1 KiB
C
/*----------------------------------------------------------------------
|
||
【程序设计】
|
||
------------------------------------------------------------------------
|
||
请编写C 代码,完成计算数组 A 与数组 B 的对称差集(即只属于 A 或者只属
|
||
于 B 的元素)。提示:可以先将数组 A 和 B 变为递增排序,然后可以使用双指
|
||
针法来高效地找到它们的对称差集。
|
||
示例1
|
||
【请输入数组 A 的大小: 】5
|
||
【请输入数组 A 的 5 个元素: 】6 5 4 3 2
|
||
【请输入数组 B 的大小: 】4
|
||
【请输入数组 B 的 4 个元素: 】7 6 3 8
|
||
【数组 A 与数组 B 的对称差集为: 】2 4 5 7 8
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅
|
||
在
|
||
Program-End 之间填入若干语句。
|
||
不要删除标志否则不得分。
|
||
不要修改或删除Program-End 之外的内容否则不得分。
|
||
----------------------------------------------------------------------*/
|
||
#include <stdio.h>
|
||
void bubbleSort(int arr[], int size)
|
||
{
|
||
int i, j;
|
||
for (i = 0; i < size - 1; i++)
|
||
{
|
||
for (j = 0; j < size - i - 1; j++)
|
||
{
|
||
if (arr[j] > arr[j + 1])
|
||
{
|
||
// 交换 arr[j] 和 arr[j + 1]
|
||
int temp = arr[j];
|
||
arr[j] = arr[j + 1];
|
||
arr[j + 1] = temp;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
int computeSymmetricDifference(int A[], int sizeA, int B[], int sizeB, int C[])
|
||
{
|
||
int i = 0, j = 0, k = 0;
|
||
/**********Program**********/
|
||
|
||
/********** End **********/
|
||
}
|
||
int main()
|
||
{
|
||
int sizeA, sizeB;
|
||
int i;
|
||
printf("【请输入数组 A 的大小: 】");
|
||
scanf("%d", &sizeA);
|
||
int A[100];
|
||
printf("【请输入数组 A 的 %d 个元素: 】", sizeA);
|
||
for (i = 0; i < sizeA; i++)
|
||
{
|
||
scanf("%d", &A[i]);
|
||
}
|
||
printf("【请输入数组 B 的大小: 】");
|
||
scanf("%d", &sizeB);
|
||
int B[100];
|
||
printf("【请输入数组 B 的 %d 个元素: 】", sizeB);
|
||
for (i = 0; i < sizeB; i++)
|
||
{
|
||
scanf("%d", &B[i]);
|
||
}
|
||
int C[200]; // 假设结果数组最大长度为 200,为 A 和 B 长度之和
|
||
int diffSize = computeSymmetricDifference(A, sizeA, B, sizeB, C);
|
||
printf("【数组 A 与数组 B 的对称差集为: 】");
|
||
for (i = 0; i < diffSize; i++)
|
||
{
|
||
printf("%d ", C[i]);
|
||
}
|
||
printf("\n");
|
||
return 0;
|
||
}
|