PTA习题 找出不是两个数组共有的元素

这篇博客介绍了如何使用C语言解决找出两个整型数组中非共有的元素的问题,提供了相应的源代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:给定两个整型数组,本题要求找出不是两者共有的元素。
题目详情
源码:

#include <stdio.h>
int main(void)
{
   	
	int m,n,i,j,k,flag1 = 1,cnt = 0,flag2 = 1,b[40] = {
   0};     //数组b用于存放要输出的元素 
    
    scanf("%d",&m);
    
    int a1[m];
    
    for(i = 0;i < m;i++)
        scanf("%d",&a1[i
在 C 语言中,找出两个数组共有和独有的元素,可以使用哈希表(如 std::unordered_set 或者自定义数组结构)来辅助。下面是一个简单的步骤: 1. 定义一个函数,比如 `findUniqueElements`,它接受两个整数数组(arr1 和 arr2)、它们的长度以及结果存储容器(这里我们假设是两个指针指向的结果数组 unique_elements 和 common_elements)。 ```c #include <stdio.h> #include <stdbool.h> #include <stdlib.h> void findUnique(int* arr1, int len1, int* arr2, int len2, int* unique_elements, int* common_elements) { // 创建一个哈希集合来存储第一个数组元素 bool hash[10000]; // 假设元素范围较小,调整大小以适应实际情况 for (int i = 0; i < len1; ++i) { hash[arr1[i]] = true; } // 检查第二个数组并记录共同元素和唯一元素 for (int i = 0; i < len2; ++i) { if (hash[arr2[i]]) { // 元素在第一个数组中 *common_elements++ = arr2[i]; } else { // 元素只在第二个数组中 *unique_elements++ = arr2[i]; } } } ``` 2. 调用这个函数,传入你需要比较的两个数组及其长度,以及预先分配好的用于存放结果的两个指针: ```c int main() { int arr1[] = {1, 2, 3, 4, 5}; int len1 = sizeof(arr1) / sizeof(arr1[0]); int arr2[] = {4, 5, 6, 7, 8}; int len2 = sizeof(arr2) / sizeof(arr2[0]); int unique1[10], common[10]; int unique_count = 0, common_count = 0; findUnique(arr1, len1, arr2, len2, unique1 + unique_count, &common_count); // ... 同理处理其他共同元素 printf("非共有元素: "); for (int i = 0; i < unique_count; ++i) { printf("%d ", unique1[i]); } printf("\n共有元素: "); for (int i = 0; i < common_count; ++i) { printf("%d ", common[i]); } return 0; } ``` 当你运行此程序,它会分别打印出两个数组中各自独有的元素共有元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值