1.问题描述
试编写函数将一维数组元素反置。
2.编程分析
将数组作为函数参数传入,将a[0]与a[n-1]对换,再将a[1]与a[n-2]对换…直到将a[(n-1)/2]与a[n-int(n-1)/2]对换。
用C语言实现代码如下:
#include <stdio.h>
#include <string.h>
void inv(int a[],int n)
{
int t,i,m;
int *p1=a;
int *p2=&a[n-1];
m=(n-1)/2;
for(i=0;i<=m;i++)
{
t=*p1;
*p1=*p2;
*p2=t;
*p1++;
*p2--;
}
}
int main()
{
int i;
int data[10]={3,7,9,11,0,6,7,5,4,2};
printf("原始数组:\n");
for(i=0;i<10;i++)
printf("%d ",data[i]);
inv(data,10);
printf("\n反置后数组:\n");
for(i=0;i<10;i++)
printf("%d ",data[i]);
printf("\n");
system("pause");
return 0;
}