无法交换数组元素c ++

时间:2015-10-01 15:01:34

标签: c++ arrays swap

我是C ++的新手。我试图解决教科书中的问题:交换数组中的第一个和最后一个元素。但是当我运行我编写的代码时,没有任何事情发生,甚至是句子"请输入数组中的数字:"没有出现。有人可以帮忙吗?感谢。

#include <iostream>

using namespace std;

int swap(int values[], int size)
{
    int temp = values[0];
    values[0] = values[size-1];
    values[size-1] = temp;
}

int main()
{
    const int SIZE = 5;
    int test[SIZE];
    cout << "Please enter the numbers in the array: " << endl;
    int input;
    cin >> input;
    for(int i=0; i<SIZE; i++)
    {
            test[i] = input;
    }
    swap(test, SIZE);
    cout << test[SIZE] << endl;
    return 0;
}

2 个答案:

答案 0 :(得分:1)

#include <iostream>

using namespace std;

//Here return type should be void as you are not returning value.
void swap(int values[], int size)
{
   int temp = values[0];
   values[0] = values[size-1];
   values[size-1] = temp;
}

int main()
{
   const int SIZE = 5;
   int test[SIZE];
   cout << "Please enter the numbers in the array: " << endl;

   //USE LOOP TO TAKE INPUT ONE BY ONE IN AN ARRAY
   for(int i = 0; i < SIZE; i++)
    cin >> test[i];

   swap(test, SIZE);

   //USE LOOP TO DISPLAY ELEMENT ONE BY ONE
   for(int i = 0; i < SIZE; i++)
     cout << test[i] << endl;

   return 0;
}

答案 1 :(得分:1)

有一些错误:

  • 您应该在循环内获取输入,然后将其分配给测试数组。
  • 打印交换的值时,请使用SIZE-1而不是SIZE访问测试数组,因为数组索引从0运行到SIZE-1,包括在内。
  • 您将swap()声明为返回int,但没有提供return声明(这表明您没有从编译器启用足够的警告)。

    #include <iostream>
    
    using namespace std;
    
    void swap(int values[], int size)
    {
        int temp = values[0];
        values[0] = values[size-1];
        values[size-1] = temp;
    }
    
    int main()
    {
        const int SIZE = 5;
        int test[SIZE];
        int input;
        cout << "Please enter the numbers in the array: " << endl;
    
        for(int i=0; i<SIZE; i++)
        {
                cin >> input;
                test[i] = input;
        }
        swap(test, SIZE);
        cout << test[SIZE-1] << endl;
        return 0;
    }