编写函数将长度为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。#include<stdio.h> #define N 10 void inputarr (int *p,int n); void outputarr (int *p,int n); void swap(int *a,int *b); void func(int *p,int m,int n); int main() { int i,n,m; int a[N]; //printf("输入数组元素:\n"); inputarr (a,N); //printf("请输入起始位置:"); scanf("%d",&m); //printf("请输入逆序处理的元素个数:"); scanf("%d",&n); func(a,m,n) ; outputarr (a,N); return 0;
时间: 2023-06-25 19:04:14 浏览: 171
}void inputarr(int *p,int n) //输入数组
{
int i;
printf("请输入%d个整数:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",p+i);
}
}
void outputarr(int *p,int n) //输出数组
{
int i;
printf("逆序处理后的数组为:\n");
for(i=0;i<n;i++)
{
printf("%d ",*(p+i));
}
}
void swap(int *a,int *b) //交换两个变量的值
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void func(int *p,int m,int n) //逆置数组
{
int i,j;
for(i=m-1,j=m+n-2;i<j;i++,j--)
{
swap(p+i,p+j);
}
}
相关问题
编写函数将长度为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。
以下是一个实现该功能的 Python 函数:
```python
def reverse_subarray(arr, m, n):
"""
将长度为 N 的一维数组从指定位置 m 开始的 n 个数逆置
:param arr: 一维数组
:param m: 开始位置
:param n: 个数
:return: 逆置后的一维数组
"""
start = m - 1 # 转化为从 0 开始的下标
end = start + n - 1
while start < end:
arr[start], arr[end] = arr[end], arr[start]
start += 1
end -= 1
return arr
```
函数接收三个参数:待逆置的一维数组 `arr`,开始位置 `m` 和个数 `n`。首先,将开始位置转化为从 0 开始的下标,然后使用双指针算法逆置该子数组。最后返回逆置后的数组。
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。
以下是实现该功能的 C 代码:
```c
#include <stdio.h>
void reverse(int arr[], int m, int n) {
int i, j;
for (i = m, j = m + n - 1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int main() {
int arr[] = {5, 4, 6, 8, 10, 12, 14, 16, 9, 20};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 3, k = 5;
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
reverse(arr, m, k);
printf("\nReversed array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:
```
Original array: 5 4 6 8 10 12 14 16 9 20
Reversed array: 5 4 6 16 14 12 10 8 9 20
```
其中 `reverse` 函数接收一个整型数组 `arr`,以及起始位置 `m` 和要逆置的元素个数 `n`。在函数中,我们使用双指针法逆置指定范围内的元素。最后在 `main` 函数中调用 `reverse` 函数,并打印出原数组和逆置后的数组。
阅读全文