如何在C中总结数组的匹配元素并计算它们的数量

时间:2015-12-01 22:40:11

标签: arrays count

我需要让程序从两个数组中找到匹配的值,匹配元素的总和及其计数。我似乎做了第一个,但第二个给了我错误的总数。它应该是25但我得到14.最后我无法弄清楚如何获得匹配元素的计数。所有帮助表示赞赏。我的代码如下。

int main(int argc, char *argv[]) {
    int a[] = {1,2,3,4,5,7,8};
    int b[] = {1,2,3,4,6,7,8};
    int i,j,sum,count;

    for (i=0;i<7;i++)

    {   

    enter code here
    for (j=0;j<7;j++)
    {
       if (a[i] == b[j])
    printf("Numbers match: %d\n",a[i]);
    }
    }
    printf("--------------------------------\n");
    if ( i == j )
    sum= (i+j);
    printf("Sum: %d\n",sum);
    return 0;
    }

1 个答案:

答案 0 :(得分:0)

试试这个。假设两个阵列的大小相同。您需要将所有计数器(sum,count)设置为已知值(0),否则将包含垃圾。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int a[] = {1,2,3,4,5,7,8};
    int b[] = {1,2,3,4,6,7,8};
    int i,j,sum=0,count=0;
    int numElements = sizeof(a)/sizeof(int);

    for (i=0;i<numElements;i++)
    {   
        for (j=0;j<numElements;j++)
        {
            if (a[i] == b[j]) {
                printf("Numbers match: %d\n",a[i]);
                count++;
                sum += a[i];
            }
        }
    }
    printf("--------------------------------\n");

    printf("Sum: %d\n",sum);
    return 0;
    }