C语言编程,编写函数将长度为N的一维数组从指定位置m开始的n个数逆置,例如原数组为5,4,6,8,10,12,14,16,9,20,若要求从第4个位置开始的5个数按逆序重新排列,则得到新数组为5,4,6,16,14,12,10,8,9,20。数据由用户自行输入
时间: 2024-01-13 15:03:08 浏览: 72
以下是实现该功能的 C 代码:
```c
#include <stdio.h>
void reverse_array(int arr[], int n, int m, int num) {
// 判断输入是否合法
if (m < 0 || m >= n || num <= 0 || m + num > n) {
printf("Invalid input!\n");
return;
}
// 逆置指定位置的数
int i, j;
for (i = m, j = m + num - 1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 输出逆置后的数组
printf("The new array is: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int n, m, num, arr[100];
int i;
// 获取数组长度和元素
printf("Enter the length of the array: ");
scanf("%d", &n);
printf("Enter %d integers: ", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 获取逆置参数并调用函数
printf("Enter the start position and the number of elements to reverse: ");
scanf("%d%d", &m, &num);
reverse_array(arr, n, m, num);
return 0;
}
```
运行结果示例:
```
Enter the length of the array: 10
Enter 10 integers: 5 4 6 8 10 12 14 16 9 20
Enter the start position and the number of elements to reverse: 3 5
The new array is: 5 4 6 16 14 12 10 8 9 20
```
阅读全文