如何在给定数组中查找重复项并在c中求和

时间:2017-08-23 18:05:24

标签: c arrays

How to add duplicated number in array please help me

int main()
{
    int i, j, tmp=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]);
                    tmp++;
                }
        }
    }
    printf("\nSUM is %d\n", tmp + tmp);
    return 0;
}

这是一个代码,我只能找到重复的数字,但我找不到数字的重复总和

2 个答案:

答案 0 :(得分:1)

注意:您的问题看起来很混乱,因为您没有提供预期的输出。

如果你想要重复数字的总和(如BLUEPIXY要求的那样)......

当您找到重复值而不是递增时,应将值添加到tmp。这样做也可以减少添加tmptmp的需要,虽然我不确定你的意图是什么。

int main()
{
    int i, j, tmp=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]);
                    tmp += arr[i];
                }
        }
    }
    printf("\nSUM is %d\n", tmp);
    return 0;
}

<强>输出

$ ./a.out
arr[0] = 4 = arr[3] = 4
arr[1] = 7 = arr[6] = 7

SUM is 11

如果您只是想重复数字......

简单地在循环中总结它们。

int main()
{
    int i, j, tmp=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]);
                    printf("SUM is %d\n\n", arr[i] + arr[i]);
                }
        }
    }
    //printf("\nSUM is %d\n", tmp + tmp);
    return 0;
}

<强>输出

$ ./a.out
arr[0] = 4 = arr[3] = 4
arr[1] = 7 = arr[6] = 7

SUM is 11

答案 1 :(得分:0)

你可以创建一个临时数组并通过遍历原始数组来添加它。对于原始数组中的每个数字,然后将其添加到临时数组。如果数字已经在临时数组中,那意味着它已经出现并且不要将它添加到临时数组中。一旦迭代原始数组中的所有元素,临时数组应该只包含唯一的数字。然后只需遍历更新的数组并将它们全部加起来。