c语言中用指针实现将N 个数按照输入时顺序的逆序排列。要求写三个函数分别 实现: (1)输入 n 个数;(2)实现逆序排列;(3)输出逆序排列后的 n 个数
时间: 2024-12-16 20:15:34 浏览: 8
在C语言中,你可以通过定义三个函数来实现这个功能,分别是接收用户输入、逆序操作以及打印结果。这里是一个简单的示例:
首先,我们需要一个结构体表示数组及其长度,便于传递:
```c
typedef struct {
int* arr; // 指向数组的指针
int n; // 数组长度
} ArrayInfo;
```
接着,定义输入函数`input_numbers`,它接受一个`ArrayInfo`类型的指针作为参数:
```c
void input_numbers(ArrayInfo* arr) {
int num;
printf("请输入%d个整数:\n", arr->n);
for (int i = 0; i < arr->n; i++) {
scanf("%d", &num);
arr->arr[i] = num;
}
}
```
接下来,定义逆序操作函数`reverse_array`,同样使用指针来操作原数组:
```c
void reverse_array(ArrayInfo* arr) {
int temp;
for (int i = 0; i < arr->n / 2; i++) {
temp = arr->arr[i]; // 保存左边的元素
arr->arr[i] = arr->arr[arr->n - 1 - i]; // 将右边的元素移动到左边
arr->arr[arr->n - 1 - i] = temp; // 将保存的左边元素移动到右边
}
}
```
最后,定义一个输出函数`output_numbers`用于打印逆序排列后的数组:
```c
void output_numbers(ArrayInfo arr) {
printf("逆序排列后的数组为:\n");
for (int i = 0; i < arr.n; i++) {
printf("%d ", arr.arr[i]);
}
printf("\n");
}
```
现在你可以将这三个函数结合起来,使用一个`ArrayInfo`结构来组织整个过程:
```c
int main() {
ArrayInfo array;
array.n = 5; // 示例,根据需要调整
array.arr = malloc(array.n * sizeof(int)); // 分配内存
input_numbers(&array);
reverse_array(&array);
output_numbers(array);
free(array.arr); // 释放内存
return 0;
}
```
阅读全文