这个问题要求使用C语言将两个长度相同的一维数组中各下标相同的对应元素相乘,并将结果存放到另一个一维数组中
时间: 2024-03-13 08:45:11 浏览: 28
好的,这个问题可以使用以下 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int* multiply_arrays(int arr1[], int arr2[], int n) {
int* result = (int*)malloc(n * sizeof(int));
if (result == NULL) {
printf("Error: out of memory.\n");
exit(1);
}
for (int i = 0; i < n; i++) {
result[i] = arr1[i] * arr2[i];
}
return result;
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {6, 7, 8, 9, 10};
int n = sizeof(arr1) / sizeof(arr1[0]);
int* result = multiply_arrays(arr1, arr2, n);
for (int i = 0; i < n; i++) {
printf("%d ", result[i]);
}
free(result);
return 0;
}
```
这个程序定义了一个名为 `multiply_arrays` 的函数,其输入参数为两个一维数组 `arr1` 和 `arr2`,以及数组的长度 `n`,输出为一个新的一维数组。函数首先动态分配一个长度为 `n` 的整型数组作为输出结果,然后使用 for 循环遍历两个输入数组,将它们对应下标位置的元素相乘的结果存入输出数组中。最后,函数返回输出数组的指针。
在 `main` 函数中,我们定义了两个输入数组 `arr1` 和 `arr2`,并计算它们的长度 `n`。然后调用 `multiply_arrays` 函数,得到一个指向输出数组的指针 `result`。最后,使用 for 循环遍历输出数组,依次打印出每个元素的值。注意,在使用完输出数组后,需要使用 `free` 函数释放动态分配的内存。