英雄联盟4周年明星赛:这个程序数组如何反转保存的呢?

来源:百度文库 编辑:中科新闻网 时间:2024/05/02 23:34:50
运行前a[10]={3,7,9,11,0,6,7,5,4,2};
运行后a[10]={2,4,5,7,6,0,11,9,7,3};
程序中的m=(n-1)/2;是什么意思呢?
{j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp;} 这里的j=n-1-i;是什么意思?不明白,请大家帮忙看一下。

#include "stdio.h"
#include "conio.h"

main()
{
int a[10]={3,7,9,11,0,6,7,5,4,2},i;
printf("The original array:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
inv(a,10);
printf("the array has been inverted:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
getch();
}

inv(int x[],int n)
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp;}
return 0;
}

m=(n-1)/2;
是找出中间的那个值。然后通过
j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp
来交换对应的两个头上的元素。
n-1-i yudsk