如何检查数组中的数字是否相等? 我有一个包含10个数字的数组,我想检查两个或多个数字是否相等。 检查这个的最佳方法是什么? 感谢。
答案 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;
}