整理一下见过的reverse方法。
逆置数组元素中的值,例如,若x所指向的数组中的数据依次为9,8,7,6,5,则逆置后依次为:5,6,7,8,9
代码如下:
#include <stdio.h>
#include <conio.h>
#include <time.h>
void func1(int a[],int m)
{
int i,temp;
for (i = 0;i < m/2; i++)
{
temp = a[i];
a[i] = a[m-1-i];
a[m-1-i] = temp;
}
}
void func2(int a[],int m)
{
int i,j,temp;
for (i = 0,j = m-1;i < m/2; i++,j--)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
void func3(int a[],int m)
{
int temp,*p;
p = a+m-1;
for (;a < p; a++,p--)
{
temp = *a;
*a = *p;
*p = temp;
}
}
void main()
{
int i;
int x[] = {9,8,7,6,5};
int num1 = sizeof(x)/sizeof(x[0]);
//printf("%d",num);
printf("The original data is:\n");
for (i = 0;i < num1; i++)
{
printf(" %d",x[i]);
}
printf("\n");
printf("The answer of func1:\n");
func1(x,num1);
for (i = 0;i <num1; i++)
{
printf(" %d",x[i]);
}
printf("\n func1 is over !\n");
//func1 is over !
int y[] = {9,8,7,6,5};
int num2 = sizeof(y)/sizeof(y[0]);
printf("The answer of func2:\n");
func2(y,num2);
for (i = 0;i < num2; i++)
{
printf(" %d",y[i]);
}
printf("\n func2 is over !\n");
//func2 is over !
int z[] = {9,8,7,6,5};
int num3 = sizeof(z)/sizeof(z[0]);
printf("The answer of func3:\n");
func3(z,num3);
for (i = 0;i < num3; i++)
{
printf(" %d",z[i]);
}
printf("\n func3 is over !\n");
//func3 is over !
getch();
}