2016-04-24 173 views
-4
#include "stdio.h" 
int main() 
{ 


    int n[10]={1,1,2,2,3,3,4,4,5,5}; 
    int m =10; 
    for (int i = 0; i < m; i++) 
    { 
     for (int j = i+1; j < m; j++) 
     { 
      if (n[i]==n[j]) 
      { 
       for (int k = j; k< m-1 ; k++) 
       { 
        n[k]=n[k+1]; 
       } 
       m--; 
      } 
     } 
    } 
    for (int i = 0; i < m; i++) 
    { 
     printf("%d\n",n[i]); 
    } 

    return 0; 
} 

中的错误当的数据都是1122334455,答案是确定的:12345, 但当1111111111,答案是111,而不是1 请告诉我为什么?谢谢!关于重复数据删除阵列

+1

因为即使在删除元素时仍然增加j? – kfsone

+0

你的代码很难遵循。 –

+0

你想用这个程序做什么? – fluter

回答

3

当您删除元素时,j仍然递增,跳过一个值。以下打印'1'。

#include "stdio.h" 
int main() 
{ 


    int n[10] = { 1,1,1,1,1,1,1,1,1,1 }; 
    int m = 10; 
    for (int i = 0; i < m; i++) 
    { 
     for (int j = i + 1; j < m; j++) 
     { 
      if (n[i] == n[j]) 
      { 
       for (int k = j; k < m - 1; k++) 
       { 
        n[k] = n[k + 1]; 
       } 
       m--; 
       j--; 
      } 
     } 
    } 
    for (int i = 0; i < m; i++) 
    { 
     printf("%d\n", n[i]); 
    } 

    return 0; 
}