此代码如何对输入起作用:20051996
程序:删除数组中的重复元素

    for(i=0;i<n;i++)
    {
      for(j=i+1;j<n;j++)
       {
          if (a[i]==a[j])
          {
            for(k=j;k<n;k++)
             {
               a[k]=a[k+1];
             }
            n--;
            j--;
          }
       }
    }

最佳答案

逻辑很简单,此处元素未删除但正在交换。

for(i=0;i<n;i++)
{
  for(j=i+1;j<n;j++)
   {
      if (a[i]==a[j])


这是为了找到等于a [i]的元素。当我们得到数字时,有另一个循环针对重复的数字,然后该单元格被下一个单元格值填充/替换。由于一个值​​已更改,因此所有剩余的单元格值都将与下一个交换。

for(k=j;k<n;k++)
         {
           a[k]=a[k+1];
         }
        n--;
        j--;


现在,最后一个单元格仍然保留,并且n和j的数量减少,因此不再引用该单元格。它删除了多余的元素,但又创建了一个新元素,您必须放置一个计数器以获取重复次数,然后必须对数组进行切片或破坏数组以使其正常工作。

关于c - 无法获得此代码的逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45778902/

10-11 23:04
查看更多