首页 > 代码库 > 华为机考--数组比较

华为机考--数组比较

比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数

比如:

数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0

数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3 

要求实现函数:

int array_compare(int len1, int array1[], int len2, int array2[])

【输入】 int len1:输入被比较数组1的元素个数;

int array1[]:输入被比较数组1;

int len2:输入被比较数组2的元素个数;

int array2[]:输入被比较数组2;

【输出】 无

【返回】 不相等元素的个数,类型为int

示例:

1) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5

函数返回:0

2) 输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6

函数返回:3

 

C++编程实现:

 需要说明的是由于采用标准输入cin得到char类型,无法识别大于9的数,但是不妨碍验证接口函数。

 1 #include <iostream> 2 using namespace std; 3  4 int array_compare(int len1, int array1[], int len2, int array2[]) 5 { 6     int count=0; 7     int len=len1; 8     if (len>len2) { 9         len=len2;10     }11     int i;12     for (i=1; i<=len; i++) {13         if (array1[len1-i]!=array2[len2-i]) {14             count++;15         }16     }17     return count;18 }19 20 int main()21 {22     char s1[50],s2[50];23     int i;24     while (cin>>s1>>s2) {25         int array1[50],array2[50];26         int len1=0,len2=0;27         for (i=0; s1[i]; i++) {28             array1[i]=s1[i]-0;29             len1++;30         }31         for (i=0; s2[i]; i++) {32             array2[i]=s2[i]-0;33             len2++;34         }35         cout<<array_compare(len1, array1, len2, array2)<<endl;36     }37     return 0;38 }

运行结果:

华为机考--数组比较