用c语言写有n个整数,通过设置两个指针,分别指向数组的首、尾元素,通过两个指针的不断移动,交换前后的数组元素,使数组逆序。 输入 输入数据有多组,每组单独占一行,第1个数n(n<=20)表示该组测试数据的个数,后跟n个整数。n为0时结束,不处理。 输出 对应每组输入,输出逆序的结果,每组单独占一行,数据之间用一个空格分隔。
时间: 2024-01-09 11:04:44 浏览: 79
用指向指针的方法对n个整数排序并输出。
好的,这是一个比较典型的数组逆序问题,我可以为您提供一份参考代码。请注意,由于您的输入数据有多组,因此您需要使用循环来处理每组数据。
```c
#include <stdio.h>
void reverse_array(int *arr, int n){
int *p1 = arr, *p2 = arr + n - 1;
while(p1 < p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
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_array(arr, n);
for(int i = 0; i < n; i++){
printf("%d ", arr[i]);
}
printf("\n");
}
return 0;
}
```
这份代码中,`reverse_array` 函数用于实现数组逆序,接受两个参数,一个是数组的首地址,一个是数组的长度。通过设置两个指针 `p1` 和 `p2`,分别指向数组的首、尾元素,通过两个指针的不断移动,交换前后的数组元素,使数组逆序。
在 `main` 函数中,我们使用 `scanf` 函数进行多组数据的输入,然后调用 `reverse_array` 函数进行逆序操作,最后输出结果即可。
希望这份代码能够对您有所帮助!
阅读全文