32060049
2015-10-22 04:19
采纳率: 94.4%
浏览 3.3k
已采纳

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--)?如果不可以是为什么噢?

万分感谢!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • Flying_Home 2015-10-22 06:09
    已采纳

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

    评论
    解决 无用
    打赏 举报
查看更多回答(5条)

相关推荐 更多相似问题