OJ 系列之两个任意长度的数组里面元素相等个数

时间:2021-06-03 18:50:53
// Compare.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
/*
第一题:数组比较:

• 问题描述: 
比较两个数组,如果2个数组长度不等,则只比较较短长度数组个数元素。
请编程实现上述比较,并返回比较中发现的不相等元素的个数
比如:
数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0
数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3
• 要求实现函数: 
void array_compare(int len1, int array1[], int len2, int array2[])

【输入】 int len1:输入被比较数组1的元素个数;
int array1[]:输入被比较数组1;
int len2:输入被比较数组2的元素个数;
int array2[]:输入被比较数组2;
【输出】 无 
【返回】 不相等元素的个数,类型为in
*/

/*
* Function: array_compare
* Usage: array_compare(len1, array1, len2, array2)
* -----------------------------------------------------
*/
void array_compare(int len1, int array1[], int len2, int array2[])
{
	if(len1<=0||len2<=0)
	{
		
		printf("%d\n",0);
		return;
	}


	int i,j=0;
	int temp =0;
	int num = 0;


	if(len1<=len2)
	{
		for (i=0;i<len1;i++)
		{
			temp = array1[i];
			for (j=0;j<len2;j++)
			{
				if (temp == array2[j])
				{
					num ++;
					break;
				}
			}
		}

		printf("%d\n",len1-num); //输出不相同的个数
	}
	else
	{
		for (i=0;i<len2;i++)
		{
			temp = array2[i];
			for (j=0;j<len1;j++)
			{
				if (temp == array1[j])
				{
					num ++;
					break;
				}
			}
		}

		printf("%d\n",len2-num);//输出相同的个数
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int array1[] = {1,3,5};
	int len1 = sizeof(array1)/sizeof(int);
	int array2[] = {77,21,1,1,1,7};
	int len2 = sizeof(array2)/sizeof(int);
	array_compare(len1, array1, len2, array2);
	getchar();
	return 0;
}