C语言数组倒序排列问题

#include

int main(){
void inv(int x[],int n);
int i,a[10]={1,2,3,4,5,6,7,8,9,0};
for(i=0;i<10;i++)printf("%d\n",a[i]);

  inv(a,10);
  printf("after change:\n");
  for(i=0;i<10;i++)printf("%d\n",a[i]);

  return 0;

}

void 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;
}

代码如图,想要把数组倒序排列,可是没有实现。还有想请问在INV的for循环里可不可以换成,for(i=0,j=n-1;i<=m;i++,j--)?如果不可以是为什么噢?

万分感谢!

第一: 将 #include 改为 #include
第二:将 m = n-1/2 改为 m = (n-1)/2
只要将第一个和倒数第一个
第二个和倒数第二个
第三个和倒数第三个
。。。。
进行交换就行
当正数n和倒数的n相同时,就不能在继续交换了,否则就会得到没有交换的结果。
例如:有三个数据要交换
你只要交换第一个和倒数第一个就可以了,中间一个可以不交换
即可!!!!!!

lz的问题出现在这样两个地方:
1、m = n-1/2;这句要改成(n-1)/2,不然m的值就比n小1
2、按照lz你的写法int a[10]; void inv(int x[],int n);要写在main之前

#include<iostream>
using namespace std;
int a[10];
void inv(int x[],int n);
int main(){
int i;
for(i=0;i<10;i++)
    a[i] = i;
//a[10]={1,2,3,4,5,6,7,8,9,0};
for(i=0;i<10;i++)printf("%d\n",a[i]);
  inv(a,10);
  printf("after change:\n");
  for(i=0;i<10;i++)printf("%d\n",a[i]);

  return 0;
}
void 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;
}

还有lz你想改的地方是可以的,并不会有错,但不建议这么写
以上,望采纳

你写的函数都定义成void了,你还return什么

还有你下面个j--,都没有范围,你减到什么时候结束啊?

直接用qsort得了。。。效率还高

倒序输出哦,直接for(i=9;i>=0;i--)printf(“%d”,a[i])不行么