c语言中用指针实现将N 个数按照输入时顺序的逆序排列。要求写三个函数分别 实现: (1)输入 n 个数;(2)实现逆序排列;(3)输出逆序排列后的 n 个数
时间: 2024-12-16 10:15:35 浏览: 16
C语言中函数指针与软件设计经验总结
在 C 语言中,我们可以使用指针来实现数组元素的逆序排列。下面我会给出三个函数的示例:
1. 函数 `input_numbers` 用于接收并存储 N 个整数:
```c
#include <stdio.h>
void input_numbers(int* arr, int n) {
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
}
```
这个函数接受一个整数指针 `arr` 和数组长度 `n`,通过循环读取用户输入,并将其存入数组。
2. 函数 `reverse_array` 实现数组的逆序排列:
```c
void reverse_array(int* start, int end) {
while (start < end) {
int temp = *start;
*start++ = *end--;
*end = temp;
}
}
```
这个函数采用双指针法,从数组两端向中间交换元素,直到两个指针相遇。
3. 函数 `output_reversed` 输出逆序排列后的数组:
```c
void output_numbers(const int* arr, int n) {
printf("逆序排列后的数列: ");
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
}
```
这个函数打印出已经逆序排列的数组内容。
要完整地调用这三个函数,你可以这样做:
```c
int main() {
int n;
printf("请输入数字的数量: ");
scanf("%d", &n);
int numbers[n];
input_numbers(numbers, n);
reverse_array(numbers, numbers + n - 1); // 注意范围,数组最后一个元素下标为 n - 1
output_numbers(numbers, n);
return 0;
}
```
阅读全文