反转输入数组

时间:2014-11-07 11:40:05

标签: c++

我在c ++中编写了一些代码,它输入一个数组,这将被反转。 第一个成为倒数第二个,倒数第二个等等...... 这里是代码:

#include <iostream>

using namespace std;

const int length=3;

void exch(int arr_exch[]){
int s,e,tmp;
s=0;
e=length-1;
while ((e-s!=1)||(e-s!=0)){
tmp=arr_exch[s];
arr_exch[e]=arr_exch[s];
arr_exch[s]=tmp;
s=s+1;
e=e-1;
}
}

int main()
{
int arr[length],counter;

  cout << "enter "<< length <<" integers:\n";
  for (counter=0; counter<length; counter++){
  cin >> arr[counter];
  }
  exch (arr[]);   **<--- here the error "expected primary expression before ']' token.**
  for (counter=0; counter<length; counter++){
  cout << arr[counter]<<"\t";
  }
    return 0;
}

错误 - 现在 - 分段错误和&#34;预期的主要表达式在&#39;]之前令牌。我不知道如何纠正它。有人能帮我吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

这对我来说有点困惑,你的代码甚至没有编译,你有分段错误。怎么样?

无论如何改变这个

exch (arr[]);

exch (arr);

在访问无法访问的无效内存或内存时,通常会出现分段错误,这只有在执行成功编译代码后的代码时才会发生。

答案 1 :(得分:0)

我可以从你的问题中理解你想要反转数组。

在代码中的while循环中,您尝试访问索引为-1的arr_exch数组,这会导致分段错误。

您可以尝试以下正常运行的代码。

#include <iostream>

const int length = 3;
// exch1() is another way for reversing a array.
void exch1(int arr_exch[]) {
    for (int i = 0; i < length/2; i++) {
        int temp = arr_exch[i];

        arr_exch[i] = arr_exch[length - i - 1];
        arr_exch[length - i - 1] = temp;
    }
}
void exch(int arr_exch[]){
    int tmp = 0;
    int s = 0;
    int e = length - 1;

    while (e > s){  
        tmp = arr_exch[s];
        arr_exch[s] = arr_exch[e];
        arr_exch[e] = tmp;
        s = s + 1;
        e = e - 1;
    }
}

int main()
{
    int arr[length];

    std::cout << "enter "<< length <<" integers:\n";
    for (int counter = 0; counter < length; counter++){
        std::cin >> arr[counter];
    }
    exch(arr);   //**<--- here the error "expected primary expression before ']' token.**
    for (int counter = 0; counter < length; counter++){
        std::cout << arr[counter] << "\t";
    }
    return 0;
}