1

这就是我所拥有的。它正在跳过零。我该如何解决?我正在尝试计算数字重复的次数。

void hit_rate(int a, int cmset[])
{
    int i, j, k=0;
    for(i=0;i<a;i++){
        for(j=i;j<a;j++){
            if((cmset[i] == cmset[j])){
                k++;
            }
        }
        printf("%d\n",k);
        k=0;
    }
}

cmset      k **now** prints  
  4          2       
  6          1        
  0          3       
  0          2       
  0          1       
  1          1       
  2          1       
  4          1    
4

2 回答 2

3

应该for(j=0;j<a;j++)

于 2012-04-11T05:02:20.213 回答
3

在计算重复项时,例如arr[5] = {1, 2, 2, 3, 3};

i = 0; // first loop
j = i; //2nd loop

comaprearr[i] == arr[j]; //condition 如果你用所有 i = 1..4 测试了 arr[0] 会发生什么;在下一次迭代中,您无需使用 arr[0] 检查 a[1],因为它已经完成(或检查)。增加计数器(当重复匹配时)。一旦它结束阵列重置计数器的末尾。并打印出来。我希望它有所帮助。仍然感到困惑,那么我将为您提供示例代码。

于 2012-04-11T05:11:20.837 回答