7-2 将数组中的数逆序存放 (20 分)
时间: 2023-05-31 12:20:43 浏览: 340
将数组中的n个数按相反顺序存放。-C++程序设计(谭浩强完整版)
### 回答1:
将数组中的数逆序存放,即将数组中的第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,以此类推,直到数组中间的元素。可以使用两个指针,一个指向数组的第一个元素,一个指向数组的最后一个元素,然后交换它们的值,然后将两个指针向中间移动,继续交换,直到两个指针相遇。
### 回答2:
这道题的思路很简单,就是把数组中的元素逆序存放,也就是将数组头尾两端的值互换。我们可以使用两个指针,一个指针指向数组的头部,一个指针指向数组的尾部,然后用循环不断交换两个指针指向的值,直到指针相遇或者过了中间位置为止。
具体实现如下:
```
#include <stdio.h>
void reverse_array(int a[], int n);
int main()
{
int a[100], i, n;
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter %d elements: ", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
reverse_array(a, n);
printf("The reversed array is: ");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
void reverse_array(int a[], int n)
{
int i, j, temp;
for (i = 0, j = n-1; i < j; i++, j--) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
```
上面的代码中,`reverse_array` 函数实现了将数组逆序存放的功能,它接受两个参数,一个是数组名,另一个是数组中元素的个数。函数中使用了两个指针,`i` 和 `j` 分别指向数组的头部和尾部,然后用循环不断交换两个指针指向的值,最终得到逆序的数组。
在主函数中,我们首先读入数组的元素个数以及元素的值,然后调用 `reverse_array` 函数将数组逆序存放,最后输出逆序后的数组。
### 回答3:
这道题要求我们将给定的数组逆序存放,可以通过交换数组元素的方式实现。具体操作如下:
首先,我们设两个指针i和j,分别指向数组的第一个和最后一个元素,然后交换它们指向的元素,接着i指针向后移动一位,j指针向前移动一位,继续交换它们指向的元素,直到i指针和j指针相遇为止。
代码实现:
```
#include <stdio.h>
#define N 10
int main() {
int arr[N], i, j, tmp;
printf("请输入一个含有%d个整数的数组:", N);
for (i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
printf("原数组为:");
for (i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n");
i = 0;
j = N - 1;
while (i < j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
printf("逆序数组为:");
for (i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
以上就是本题的解法,时间复杂度为O(N/2)。这里需要注意的是数组元素的下标从0开始,所以数组最后一个元素的下标应为N-1。另外,我们可以通过循环语句来遍历整个数组,这样不仅代码简洁,而且可读性更高。
阅读全文