为什么在 c++ 中计算重复元素时,我的计数值大于数组中的元素数

Why is my count value greater than the number of elements in an array, when counting duplicate elements in c++?

本文关键字:元素 大于 数组 我的 c++ 计算 为什么      更新时间:2023-10-16

在计算数组中重复元素的数量时,我测试了计数值。不知何故,该值大于数组中的实际元素数。我的猜测是,在双倍循环中,我得到了一个"双倍"计数。我试图指出问题所在,它就在计数中。

我尝试在我的代码中打印其他段的值,遵循代码,我似乎找不到为什么我编写的代码不起作用。

int main(){
  int a[100];
  int b[100];
  int n,count;
  cin >> n;
  for(int i = 0; i < n; i++){
    cin >> a[i];
  }
  for(int i = 0; i < n; i++){
    b[i] = a[i];
  }
  for(int i = 0; i < n; i++){
    for(int j = 0; j < n; j++){
      if(a[i] == b[j]){
        count++;
      //  cout << count << endl;
      }
    }
  }

对于我的测试,我使用了:3,1 1 2我期望 1,相反,我得到了 1 2 3 4 5

你有:

a[0]设置为 1
a[1]设置为 1
a[2]设置为 2

b[0]设置为 1
b[1]设置为 1
b[2]设置为 2

您的比较是:

a[0] == b[0]评估为 true .
a[0] == b[1]的计算结果为 true
a[0] == b[2]的计算结果为 false

a[1] == b[0]的计算结果为 true .
a[1] == b[1]的计算结果为 true .
a[1] == b[2]的计算结果为 false .

a[2] == b[0]的计算结果为 false .
a[2] == b[1]的计算结果为 false .
a[2] == b[2]的计算结果为 true .

如您所见,其中有 5 个true值。这就解释了为什么你会得到

1 2 3 4 5