int i, j;
for (i = 0; i < n-1; i++) {
if (a[i] >= 0) { // 假设所有数都应该是非负数
for (j = i+1; j < n; j++) {
if (a[i] == a[j]) {
a[j] = -1; // 设成-1表示应该删除,如果所有数都是正常值,那只好在这里循环删除了
}
}
}
}
i = 0, j = 0;
// 用 j 遍历数组,然后遇到非负数就拷贝到 i 的地方
while (j < n) {
if (a[j] >= 0) {
if (i < j) // 这里是为了避免相同的数拷贝
a[i] = a[j];
i++;
}
j++;
}
可以再定义一个空数组b[],循环把a数组的数复制给b,复制前将被复制的数与b数组当前拥有的所有数对比下,相同就不复制,依此类推。
#include
void main()
{
int a[]={3,2,4,4,5};
int k,i,j,m;
k=sizeof(a)/sizeof(a[0]) ; //计算数组个数
for(i=0;i<=k-1;i++)
for(j=i+1;j<=k-1;j++)
{
if(a[i]==a[j])
{
m=j;
while(m
a[m]=a[m+1];
m++;
}
k--;
j--;
}
}
for(i=0;i<=k-1;i++)
{
printf("%d ",a[i]);
}
}
vc++可运行
int main(){
int a[]={1,2,4,4,3,8,2,7,2,4};
int t=10;
int i,j,m;
for(i=0;i
for(m=j 1;m
i--;
break;
}
}
}
for(i=0;i
}
return 0;
}