【发布时间】:2020-10-09 03:53:32
【问题描述】:
在我的问题中,我有两个向量,例如:
v1[4] = {1, 2, 3, 4};
v2[4] = {5, 6, 7, 8};
我应该像这样创建第三个向量:v3 = {1,5,2,6,3,7,4,8}。
向量的大小也可以不同。
int main () {
int n1, n2, i, j;
printf("elementi primo vettore: "); //number of elements first vect
scanf("%d", &n1);
printf("elementi secondo vettore: "); //number of elements second vect
scanf("%d", &n2);
int *vett1 = (int *)malloc(n1 * sizeof(int));
int *vett2 = (int *)malloc(n2 * sizeof(int));
int *vett3 = (int *)malloc((n1 + n2) * sizeof(int));
for(i = 0; i < n1; i++) {
printf("primo vettore %d->", i);
scanf("%d", &vett1[i]);
}
for(i = 0; i < n2; i++) {
printf("secondo vettore %d->", i);
scanf("%d", &vett2[i]);
}
int a = 0;
for(i = 0, j = 0; i < n1, j < n2; i++, j++) {
if(i < n1) {
vett3[a] = vett1[i];
a++;
}
if(j < n2) {
vett3[a] = vett2[j];
a++;
}
}
}
但它只有在向量具有相同大小时才有效,为什么?
【问题讨论】:
-
i < n1, j < n2与j < n2含义相同。 -
v2[2]是int v2[4]的错字吗?它有四个初始化程序。目前尚不清楚您要在第三个向量中放置什么。如果它是顺序的第一个和第二个向量,一个简单的方法是有两个循环。复制一个向量,然后复制另一个。 -
@WeatherVane 书写错误,抱歉