C语言,将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而又不重复。
很佩服你写这么强的程序,首先你的第三层for循环做比较第一次给b1赋了a1,这是对的,但是当b1等于2后,你以后的每一次比较,要么就是在和a[0]比较后停下来,i=0,然后下一个b赋值为也就是1,要么就是和a[0]比较一次,i=1,然后把后面一个b赋值为2,所以总是121212的不止,而且你的那个if根本没有判定作用,你能把这么简单的程序写成这样,真的很强,只能说思维有别于常人
int j=0;
for(i=0;i<n-1;i++)
{
if(a[i] != a[i+1])
{
b[j] = a[i];
j++;
if(i+1 == n)
{
b[j] = a[i+1];
}
}
else
{
if(i+1 == n)
{
b[j] = a[i];
}
}
}
其中:n为数组长度
数组里面是整数吗?根据你的代码,有些错误需要指出:
#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
",b[i]);}
}
这个就是一个去重的题目,目的就是让你把现有数组的中重复的值去掉之后,存到一个新的数组里而已。
排序之后,直接一个for循环就能搞定的。
C语言,将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数...
这句话完全是算法错误。你是想实现当不重复的输入,如果你用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]永远没有赋值,是吧?这就是错误所在。所以...
如何把一个数组的值给另一个数组
另一种方法是利用C语言提供的库函数memcpy进行整体复制。该函数能够高效地将一个地址上的数据复制到另一个地址。memcpy函数的声明位于string.h头文件中,函数原型如下:void * memcpy(void *dst, void *src, int length);其中,dst是目标地址,src是源地址,length是要复制的数据长度。使用上述方法,上...
怎么把一个结构体数组里的东西复制到另一个同类型结构体数组
在C语言中,使用memcpy函数可以高效地将一个结构体数组的内容复制到另一个同类型的结构体数组中。假设我们有两个同类型的结构体数组f1和f,并且我们想要将f中的内容复制到f1中,可以使用以下代码:memcpy(f1, f, sizeof(f));这里需要注意的是,memcpy函数的第二个参数是需要复制的源数据,第三个参...
用C语言编写一个程序,将一个数组中的元素复制到另一个数组中?
{ int i, array1[5], array2[5];printf("请输入第一个数组:");for(i=0; i<5; i++)scanf("%d", &array1[i]);printf("\\n第二个数组:");for(i=0; i<5; i++){ array2[i] = array1[i];printf("%d ", array2[i]);} return 0;} ...
c语言 复制数组
strcpy(t[i],a[j],n);该语句的意思是:将某已知二维数组a的第j行前n个字符复制到另一个二维数组t的第i行中。给分吧
C语言将a数组复制到b数组
也可以使用模板写的拷贝构造版本,或者移动构造版本,实际上使用移动构造版本差不多已经足够。如果是stl还有其他偏特化处理。当然,stl还有一个数组的版本,我水平有限就不详细展开了,你可以参考libc++的实现来理解。如果使用C++,也可以直接使用std::copy实现数组的复制,这是最简单的方法。
c#如何把某个长数组的一部分复制到另一个短数组里面
length —— 要复制的元素数目。用法举例如下:(1)复制数组的一部分到另一个数组 int[] src = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };int[] dest = new int[4];\/\/ 将数组 src 中元素 2,3,4,5 复制到 dest Array.Copy(src, 1, dest, 0, 4...
在c语言中怎样将一个数组中的全部内容赋给另一个数组,有没有一步就可 ...
很明显你没有分清楚数组和字符串,对于字符串来说是可以的,因为有strcpy()和memcpy()这类函数调用可以直接复制,但是数组是不行的,一般都得用到一个循环。函数返回数组只要返回只要返回首地址就可以了,比如你要返回的是int a[10]的数组,那么你定义函数的时候可以这样写:int *a func(){………...
C语言,将数组a(10个元素)的数据逆序复制到数组b中,并输出数组b的值(下 ...
main(){ int a[10],b[10],*pa,*pb; int i; pa=a; pb=b; for (i=0;i<=9;i++) scanf("%d",&a[i]); cun(pa,pb); for (i=0;i<=9;i++) { if(i==9) printf("%d",b[i]); else printf("%d ",...
关于c语言的数组复制问题
可以更简单:int i, a[10],b[10]; \/\/假设两个数组同类型并且大小相同。for (i=0;i<10;++i) scanf("%d", &a[i]); \/\/输入a[0]-a[9]。memcpy(b, a, sizeof(a)); \/\/就把a[]复制到b[]中去了。