题目描述 有n个整数,通过设置两个指针,分别指向数组的首、尾元素,通过两个指针的不断移动,交换前后的数组元素,使数组逆序。 输入 输入数据有多组,每组单独占一行,第1个数n(n<=20)表示该组测试数据的个数,后跟n个整数。n为0时结束,不处理。 输出 对应每组输入,输出逆序的结果,每组单独占一行,数据之间用一个空格分隔。
时间: 2024-03-25 19:41:03 浏览: 67
以下是用C语言编写的程序,实现了题目描述的功能:
```c
#include <stdio.h>
void reverse(int arr[], int n) {
int *p = arr; // 指向数组首元素的指针
int *q = arr + n - 1; // 指向数组尾元素的指针
while (p < q) {
int temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
}
int main() {
int n;
while (scanf("%d", &n) != EOF && n != 0) {
int arr[20];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
reverse(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
return 0;
}
```
程序思路:
1. 读入数据,包括数组长度n和数组元素。
2. 定义两个指针p和q,分别指向数组首元素和尾元素。
3. 当p小于q时,交换p和q所指向的元素,并将p向后移动一位,q向前移动一位。
4. 输出逆序后的数组元素。
运行示例:
输入:
```
5 1 2 3 4 5
4 8 7 6 5
0
```
输出:
```
5 4 3 2 1
5 6 7 8
```
希望能够帮到你!
阅读全文