【发布时间】:2014-07-15 06:25:49
【问题描述】:
我想删除数组中的重复值。例如:array[1,5,6,1,3,5,9] 我想要array[6,3, 9].
我已经写了这个,但是我遇到了麻烦:
#include<stdio.h>
main() {
int array[50], i, j, k=0, c=0, array2[50], n;
printf("Enter array dimension: "); scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("array[%d]= ", i); scanf("%d", &array[i]);
}
for (i = 0; i < n; ) {
for (j = i + 1; j < n; j++) {
if (array[i] == array[j])
i++;
else {
array2[k++] = array[i];
c++;
}
}
}
for (k = 0; k < c; k++) {
printf("%d ", array2[k]);
}
system("pause");
}
【问题讨论】:
-
您没有在第一个
for循环中增加i。如果array[i] == array[j]没有发生,i将永远保持不变。此外,k和c似乎具有相同的值,去掉其中一个。数字范围有限制吗?你对性能有任何限制(大 O),或者O(n*n)可以接受吗? -
我想这将是一个小数组,10 - 15 个元素。我知道,我正在无限循环。我该如何改变呢?谢谢
-
您的循环永远不会终止,因为正如我在上面所写的,您不会在所有情况下增加
i。尝试调试(一步一步,使用你最喜欢的调试器)输入数组为[1,2,3]的情况。 -
人们在哪里学习写作
main()??说真的,自 90 年代的某个时候以来,没有参数的main已被弃用/过时/不好的做法。人们还在使用早期的 K&R,或者阅读 C++ 书籍,还是什么?这是 2014 年。在 C 语言中,主函数要么接受两个参数,要么接受void。它不是可变参数函数! -
我是学生,几年前我已经开始学习 C。所以,如果你能帮助我,请帮助我。
标签: c arrays duplicate-removal