如何检查数组中的数字是否相等?

时间:2013-12-21 17:18:49

标签: c arrays

如何检查数组中的数字是否相等? 我有一个包含10个数字的数组,我想检查两个或多个数字是否相等。 检查这个的最佳方法是什么? 感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用以下线性搜索程序解决此问题。以下程序不仅会报告相等的数组元素,还会报告相等的数组元素的数量。如有任何错误,请告诉我:)

#include <stdio.h>

int main()
{
    int a[10], i, j, flag = 0;

    printf("Please Enter 10 Numbers");

    for(i = 0; i < 10; i++)
        scanf("%d", &a[i]);

    for(i = 0; i < 10; i++)
    {
        for(j = i + 1; j < 10; j++)
        {
            if(a[i] == a[j])
            {
                flag++;
                printf("Array Element %d and %d are equal", i, j);
            }
        }
    }

    printf("\nThe Equal Numbers In The Array Are = %d", flag);
    return 0;
}

答案 1 :(得分:1)

对于未排序的数组,最好先对数组进行排序。我使用qsort函数对数组进行排序。在对数组进行排序之后,我将比较每个元素的相邻元素。

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10


int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int main()
{
   int values[] = { 88, 56, 100, 2, 100, 56, 56, 56, 2, 1 };
   int count = 0;
   qsort(values, 5, sizeof(int), cmpfunc);

   for( int i = 0 ; i < SIZE-1; i++ )
   {
      if(values[i] == values[i+1])
        count++;
   }
   printf("%d dupes", count);

   return(0);
}

答案 2 :(得分:1)

如果您使用的是1D数组,则必须遍历每个元素,然后检查每个元素是否等于索引更大,以防止重复结果,因为(arr[i]==arr[j] => arr[j]==arr[i])

#include <stdio.h>

int main()
{
    int i, j, dup=0;
    int arr[10] = { 4, 7, 2, 4, 3, 1, 7, 9, 6, 5};
    for(i = 0; i < 10; i++){
        for(j = i + 1; j < 10; j++){
            if(arr[i] == arr[j]){
                printf("arr[%d] = %d = arr[%d] = %d\n", i, arr[i], j, arr[j]);
                dup++;
            }
        }
    }
    printf("\nnumber of duplicates is %d\n", dup);
    return 0;
}