核心思想:设置i为首,j为尾,以中间值m为界限,首位互换即可
若总共输入n个数,那m的选取应为m = (n-1)/2;因为n可能是奇数可能是偶数,所以直接-1除2再取整。
代码实现:
#include<cstdio>
void inv(int a[],int n);
int main(){
int i,a[10],n;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("输出原始序列:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
inv(a,10);
printf("\n输出逆序序列:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
//关键代码
void inv(int a[],int n){
int i,j,m,t;
m = (n-1)/2; //取中间位置,因为n可能是奇数或者是偶数,所以-1除2取整
for(i=0;i<=m;i++){ //注意i的取值范围
j = n-i-1;
t = a[i];
a[i] = a[j];
a[j] = t;
}
}