Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        4年前关闭。
                                                                                            
                
        
我有两个数组,如果在1个数组中重复一个数字,我会将两个中的对应位置都设置为零。然后,我想将其存储在一个单独的数组中,现在忽略那些零并复制其余的零。但是现在如果我尝试这样做,它只是将数组复制为零,有什么想法吗?

  for (i = 0; i < linect; i++) //searches array sets repeated points to zero
  {
        if (array1[i] == array1[i+1])
        {
            array1[i] = array1[i + 1] = 0;
            array2[i] = array2[i + 1] = 0;
        }
  }
  for (i = 0; i < linect; i++)
  {
      if (array1[i] > 0.5){
          fixarray1[i] = array1[i];
          fixarray2[i] = array2[i];
      }
  }
j = 0;
while (j <300){
printf("\n%f", fixarray2[j]);
j++;
}

最佳答案

在循环中,仅当array1中的元素不为零时,值才存储在fixarray中,但是即使元素为零,其索引也会递增。

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

{
      if (array1[i] > 0.5)
   {
      fixarray1[i] = array1[i];
      fixarray2[i] = array2[i];
   }
}


在这个循环中,仅当array1中的值不为零时,fixarray的索引才应递增。

int j=0;

for(i = 0; i < linect; i++)
 {
     if(array1[i]>0.5)
     {
              fixarray1[j] = array1[i];
              fixarray2[j] = array2[i];
              j++;
     }
 }


仅当array1中的元素不为零时,才将值存储在fixarray中。

关于c - 数组复制零? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31248143/

10-11 04:13
查看更多