用c语言如何判断这两个数组是相等的? int a[5]={1,2,3,2,5}; int b[5]={1,2,3,2,5};
2011-05-05
如果相等
用数组一中每个元素去分别和二中的比,只要在二中都能找到相等的,那个元素就被标记一下,下次不和他比
最后二中的都被标记了,说明完全相等
你自己实现吧
我感觉这个想法应该没错呢~~有什么不对的望提出啊~~
呵呵,那就称这两个数组相似吧。
这个很简单的,你只需要把a中的每个元素分别循环判断是否为b的子元素,如果a中的每个元素都为b的子元素。并且b中不存在没有比较的元素(a中没有的元素),就可以断定是相似的
希望可以帮到你哈
相等,就是说他们含有相同的n个元素,且某个相同元素的个数也是一样的。
首先排序,然后比较
#include
#define N 5
int cmp(void * a, void * b)
{
return *(char*)a - *(char *)b;
}
void main()
{
int i;
char a[N] = {1, 3, 2, 5, 2};
char b[N] = {5, 2, 2, 1, 3};
qsort(a, N, sizeof(char), cmp);
qsort(b, N, sizeof(char), cmp);
for (i = 0;i = N) printf("yes\n");
}
/*程序已测试OK*/
#include "stdio.h"
#include "conio.h"
int a[]={9,2,3,7,1,4,2,6,21,8};
int b[]={9,2,3,7,1,4,2,6,21,8};
/************************************************************/
/*排序 */
/* *Block 指向数组的指针 */
/* Quantity 数据总数 */
/************************************************************/
void Seqencing(int *Block,unsigned int Quantity)
{
unsigned int i,j;
int n;
for(i=0;i<Quantity;i++)
{
for(j=i+1;j<Quantity;j++)
{
if(*(Block+i)>*(Block+j))
{
n=*(Block+j);
*(Block+j)=*(Block+i);
*(Block+i) = n;
}
}
}
}
/***********************************************************/
/*求是否相等 */
/*Quantity 数据总数 */
/***********************************************************/
char Compare(unsigned int Quantity)
{
int size1,size2;
unsigned int i;
if(sizeof(a) == sizeof(b))
{
for(i = 0; i<Quantity;i++)
{
if(a[i] != b[i])return 0; /*如果有不相等的则返回 0*/
}
return 1;
}
else
return 0; /*都相等的则返回 1*/
}
void main()
{
int block;
unsigned int i;
block = sizeof(a)/2; /*计算数组数据个数*/
Seqencing(a,block); /*对数组进行排序*/
printf("\n\n-------------------------------------------------------------------------------\n\n");
for(i=0; i<block;i++)
{
printf("a:%d\t",a[i]); /*输出排序结果*/
}
printf("\n\n-------------------------------------------------------------------------------\n\n");
block = sizeof(b)/2;
Seqencing(b,block);
printf("\n\n-------------------------------------------------------------------------------\n\n");
for(i=0; i<block;i++)
{
printf("b:%d\t",b[i]);
}
printf("\n\n-------------------------------------------------------------------------------\n\n");
if(Compare(block)) /*判断数组是否相等*/
printf("result: a = b");/*输出判断结果*/
else
printf("result: a != b");
getch();
}