回 帖 发 新 帖 刷新版面

主题:一维数组中的数组元素换位置问题

已知在一维数组A中依次存放着两个向量(a1,a2,...,am)和(b1,b2,...,bn)试编写算法将两个向量的位置互换,即把(b1,b2,...,bn)放到(a1,a2,...,an)的前面。

回复列表 (共8个回复)

沙发

#include<stdio.h>
main()
{
int a[]={1,2,3,4,5,6,10,20,30,40,50};
int b[]={};
int i,j;
for(i=0;i<=10;i++){b[i]=a[i];printf("%d ",b[i]);}
printf("\nok\n");
for(i=0;i<=10;i++)a[i]=0;
for(i=0;i<=4;i++) {j=i+6;a[i]=b[j];}
for(i=5;i<=10;i++){j=i-5;a[i]=b[j];}
for(i=0;i<=10;i++)printf("%d ",a[i]);
}

为何不对?

板凳

//  已知在一维数组A中依次存放着两个向量(a1,a2,...,am)和(b1,b2,...,bn)
//  试编写算法将两个向量的位置互换,
//  即把(b1,b2,...,bn)放到(a1,a2,...,an)的前面。
#include<stdio.h>
main()
{
int a[]={1,2,3,4,5,6,10,20,30,40,50};
int b[]={0,0,0,0,0,0,0,0,0,0,0}; //这里的初始值很重要
int i,j;
for(i=0;i<=10;i++){b[i]=a[i];printf("%d ",b[i]);}
printf("\nok\n");
for(i=0;i<=10;i++)a[i]=0;
for(i=0;i<=4;i++){j=i+6;a[i]=b[j];};
for(i=5;i<=10;i++){j=i-5;a[i]=b[j];};
for(i=0;i<=10;i++)printf("%d ",a[i]);
}

现在改出来了,原来是这样,b的初始化很重要。

3 楼


int b[]={0,0,0,0,0,0,0,0,0,0}

4 楼

可以简单写成int b[11]={0};

5 楼

嗯,还行:)

6 楼

d

7 楼


c[i]和c[n-i-1]交换

8 楼

good

我来回复

您尚未登录,请登录后再回复。点此登录或注册