我有两个数组:
int mainArr[10] = {111, 222, 333, 444, 555, 666, 777, 888, 999, 3000};
int indexArray[10] = {6, 2, 9, 0, 1, 3, 7, 4, 5, 8};
它必须像这样工作:indexArray
替换mainArr
中的元素。第六个元素替换零元素,第二个元素替换第一个元素,依此类推。
最后应该是这样的:
777 333 3000 111 222 444 888 555 666 999 - mainArr
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
6 2 9 0 1 3 7 4 5 8 - indexArray
我有一段代码来理解正在发生的事情:
int replaceByIndex (int startArray[], int customIndexes[]);
int main ()
{
int *result;
int mainArr[10] = {111, 222, 333, 444, 555, 666, 777, 888, 999, 3000};
int indexArray[10] = {6, 2, 9, 0, 1, 3, 7, 4, 5, 8};
result = replaceByIndex(mainArr, indexArray);
for (int i = 0; i < 10; i++) {
printf("%d\n", result[i]);
}
return 0;
}
int replaceByIndex (int startArray[], int customIndexes[]) {
for (int i = 0; i < 10; i++) {
startArray[i] = customIndexes[i];
}
return startArray;
}
我只是做了一个替换数组元素的算法,但这不是我需要的。
2条答案
按热度按时间fnx2tebb1#
这是最简单的方法来归档你想要的东西。你想要的解决方案的问题是,自定义索引是对数组中旧位置的引用,而不是你正在构建的新位置,所以你要么以其他方式格式化customIndex数组,要么创建一个新数组。
gjmwrych2#
你想要这样的东西:
仍有改进的余地。例如:
replaceByIndex
中被硬编码为10
,你应该用一个参数来替换它。customIndexes
中没有一个索引超过数组大小。我把这些作为练习留给你。