【发布时间】:2020-07-09 20:35:09
【问题描述】:
我想我快要完成这个计划了,但我不完全确定如何继续。
基本上,我有三个数组。数组 3 为空,数组 1 和数组 2 的值由用户自行决定。我想将数组 1 和数组 2 合并到数组 3 中,使它们在数组 3 中的偶数和奇数位置之间交替。
所以,例如:
数组 1 = [1,2,3,4,5]
数组 2 = [10,20,30,40,50]
数组 3 = [0,0,0,0,0,0,0,0,0,0]
我希望最终结果如下所示:
数组 3 = [1,10,2,20,3,30,4,40,5,50]
这就是我说我希望数组 1 填充 奇数值,而数组 2 填充 偶数值时的意思。
这就是我目前所拥有的相关代码的样子:
void EvenOdd(int n, int *ap1, int *ap2, int *ap3) {
// "n" is set to 5.
ap1 = arr1;
ap2 = arr2;
ap3 = arr3;
int i;
int j;
int k;
for (i = 0; i < n * 2; i++) {
for (j = 0; j < n; j++) {
if ((i + 1) % 2 != 0)
ap3[i] = ap1[j];
}
for (k = 0; k < n; k++) {
if ((i + 1) % 2 == 0)
ap3[i] = ap2[k];
}
}
}
arr1、arr2、arr3都是全局数组。
每次我运行程序时,它只会将数组 1 和数组 2 的最后一个值分配给数组 3 中的位置,如下所示:
数组 1 = [1,2,3,4,5]
数组 2 = [6,7,8,9,10]
数组 3 = [5,10,5,10,5强>,10,5,10,5,10]
这一切都向我表明,第一个内部的两个 for 循环一直运行“i”,直到它们每次都到达数组的末尾,这就是为什么最后一个值被一致分配的原因,但我不是确定如何解决这个问题以获得预期的结果。
【问题讨论】:
-
你有嵌套循环。内部循环一遍又一遍地分配给
a[i],因此只有最后一个值“坚持”。你不需要嵌套循环来解决这个问题。想想如何获得i-th 奇数和i-th 偶数索引。