用c语言如何判断这两个数组是相等的? int a[5]={1,2,3,2,5}; int b[5]={1,2,3,2,5};

注意数组是无序的,且可能存在重复的元素。

第1个回答  2011-05-05
先判断长度是不是相等
如果相等
用数组一中每个元素去分别和二中的比,只要在二中都能找到相等的,那个元素就被标记一下,下次不和他比
最后二中的都被标记了,说明完全相等

你自己实现吧
我感觉这个想法应该没错呢~~有什么不对的望提出啊~~
第2个回答  2011-05-05
这两个数组肯定不等啊,数组相等就只有里面元素及其顺序完全一致才行追问

呵呵,那就称这两个数组相似吧。

追答

这个很简单的,你只需要把a中的每个元素分别循环判断是否为b的子元素,如果a中的每个元素都为b的子元素。并且b中不存在没有比较的元素(a中没有的元素),就可以断定是相似的
希望可以帮到你哈

第3个回答  2011-05-05
数组{1,2,3,4}和{2,1,4,3}相等吗?追问

相等,就是说他们含有相同的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");
}

第4个回答  2011-05-07

/*程序已测试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();

}

本回答被提问者采纳
相似回答