C语言比较两个数组,从末未开始直至其中一个数组结束,比较两个数组有几个元素是一样的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言比较两个数组,从末未开始直至其中一个数组结束,比较两个数组有几个元素是一样的相关的知识,希望对你有一定的参考价值。

#include "stdio.h"
#include "string.h"

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

int i,n=0;
len1=strlen(array1);
len2=strlen(array2);
if(len1>len2)

for(i=len1-1;i>len1-len2-1;i--)
if(array1[i]==array2[i])
n++;


else if(len1<len2)

for(i=len2-1;i>len2-len1-1;i--)
if(array1[i]==array2[i])
n++;

else

for(i=len1-1;i>=0;i--)
if(array1[i]==array2[i])
n++;

return n;



main()

int num,x,y,arr1[]=1,2,3,4,5,arr2[]=2,3,4,5;
num=compare_array(x,arr1,y,arr2);
printf("%d",num);
getch();


这样写错在哪里,得不到正确的结果

#include "stdio.h"
#include "string.h"

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

    /*
     * 3元运算符
     * 当数组1的长度>=数组2的长度,循环次数应该数组2的长度,不然会数组下标越界
     * 反之循环次数为数组1的长度
     */
    int loopCnt = len1>=len2 ? len2 : len1;  //循环次数
    int count = 0;  //记录重复个数
    int arrBegin1 = len1 - 1;  //数组1的末尾下标
    int arrBegin2 = len2 - 1;  //数组2的末尾下标
    int i = 0;

    for (i=0; i<loopCnt; i++)
    
        //判断两数组最末尾的值,以后下标递减,直到某数组结束
        if (array1[arrBegin1-i] == array2[arrBegin2-i])
        
            count++;
        
    

    return count;


int main()

    int compare_array(int len1, int array1[], int len2, int array2[]);
    int num = 0;
    int arr1[]=1,2,3,4,5;
    int arr2[]=2,3,4,5;
    int arrLen1 = sizeof(arr1) / sizeof(int);  //取数组1的长度
    int arrLen2 = sizeof(arr2) / sizeof(int);  //取数组2的长度

    num = compare_array(arrLen1, arr1, arrLen2, arr2);
    printf("%d", num);
    getch();

    return 0;

大致应该是这样的。。。

有不明白的,留言。

PS:strlen是取字符串长度的,这里不适用

PS1:int数组当参数时,默认是传递首地址

参考技术A 1、strlen(array1); 传入的是 char* 二你的是int[];

2、你的x,y都没有初始化,所以你直接调用哪个函数肯定不对了
参考技术B 你想啊,如果len1>len2,i=len1-1;array2[i]还会存在吗 。。。数组下标越界了吧追问

这不是字符串啊,唉。。。

追答

if(len1>len2)
for(int i= len1-1;i>len1-len2-1;i--)
if(array1[i]==array2[i-len1+len2])//从最后开始比较,array1比array2长度多len1-len2,所以 // array2从i-(len1-len2)个元素,也就是最后一个开始
n++;






else if(len1len2-len1-1;i--)
if(array1[i-len2+len1]==array2[i])
n++;





参考技术C 字符串匹配吗?

以上是关于C语言比较两个数组,从末未开始直至其中一个数组结束,比较两个数组有几个元素是一样的的主要内容,如果未能解决你的问题,请参考以下文章

折半查找(C语言)

折半查找(C语言)

如何求两个数组的交集??

排序算法——冒泡排序(C语言实现)

java冒泡排序详细讲解

C语言中如何用gets();语句来接收一个二维数组