C语言,将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而又不重复。
数组里面是整数吗?根据你的代码,有些错误需要指出:
#define n 10; 这句话不用加分号,加了就错了。
for(i=0;a[j]!=a[i];i++)
b[j]=a[j];这句话完全是算法错误。
你是想实现当不重复的输入,如果你用a[i]和a[j]比,就不对了。
假设输入1234567891
第一次,j=0,i=0;a[i]==a[j],所以循环跳出。
第二次,j=1,i=0;a[j]!=a[i],所以b[j]=a[j],就是给b[1]赋值了,b[0]永远没有赋值,是吧?这就是错误所在。
所以你要在前面加一句b[0]=a[0]。
还有问题就是你只要遇到重复的,就会跳出循环,然后对应的b[j]并没有赋值,所以你的算法还是有很大的问题。下面是我的代码。
#include<stdio.h>
#define N 10
void main()
{
int i,j,a[N],b[N];
int index=0;//这个变量指向b的下标
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<N;i++)//用i指向数组a的下标
{
for(j=0;a[i]!=b[j] && j<i;j++)//用j指向数组b的下标
{
}
if(i==j)
{
b[index]=a[i];
index++;
}
}
for(i=0;i<index;i++)
{
printf("%d\n",b[i]);
}
}