#include <stdio.h>
int main()
{
int array[8] = {4, 1, 5, 4, 2, 7, 4, 2};
int i, j, k;
int len = 8;
for(i = 0; i < len; i++)
{
for(j = i + 1; j < len;)
{
if(array[j] == array[i])
{
for(k = j; k < len - 1; k++)
{
array[k] = array[k + 1];
}
len--;
}
else
{
j++;
}
}
for(i = 0; i < len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
return 0;
}
您好,
上面是删除数组中重复数字的代码,但是在编译和执行时,我得到4 1 5 2 7 2 - 这是不对的,因为我应该得到4 1 5 2 7。
似乎我遇到了len的问题,但无法弄清楚代码中的具体位置和内容需要修复。
答案 0 :(得分:1)
不知道缩进是否是错误,或者您错过了从某处复制代码?
无论如何要让它运行,进行这些微小的改动并运行(不要指望我怀疑你不需要它的解释)
#include <stdio.h>
int main()
{
int array[8] = {4, 1, 5, 4, 2, 7, 4, 2};
int i, j, k;
int len = 8;
for(i = 0; i < len; i++)
{
for(j = i + 1; j < len;)
{
if(array[j] == array[i])
{
for(k = j; k < len - 1; k++)
{
array[k] = array[k + 1];
}
len--;
}
else
{
j++;
}
}
} // close the main `for` loop
// you used to print out after each iteration!
for(i = 0; i < len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
return 0;
}