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 "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语言比较两个数组,从末未开始直至其中一个数组结束,比较两个数组有几个元素是一样的的主要内容,如果未能解决你的问题,请参考以下文章