此方法只针对数组里不出现0的情况。
求改进!!!!!
int main(void) {
/*例如:
有数组的元素是:1,2,3,4,5,1,2,3,4,6
只有5和6只出现1次,要找出5和6.*/
int arr[10] = { 1,2,3,4,5,1,2,3,4,6 };
//printf("%d", sizeof(arr) / sizeof(arr[0]));
int size = sizeof(arr) / sizeof(arr[0]);
void seek(char*,int);
seek(arr,size);
return 0;
}
void seek(int arr[], int size) {
for (int i = 0; i < size; i++) {
int count = 0;
for (int j = i+1; j < size; j++) {
if (arr[i] == arr[j]) {
arr[j] = 0;
count++;
break;
}
}
if (count) {
arr[i] = 0;
}
}
for (int i = 0; i < size; i++) {
if (arr[i] != 0) {
printf("%d ", arr[i]);
}
}
}
如代码里所诉,将出现过的数记作0,最后不是的数,就是只出现过一次的数。