0

我编写了这段代码来尝试反转给定数组中的元素:

#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
    int numbers[6] = {1, 5, 9, 10, 12, 18};
    int b = 0;
    int a = 5;
    for (int i = 0; i < 3; ++i)
        {
            b = numbers[i];
            numbers[i] = numbers[a-i];
            numbers[a-i] = b;
        }
    for(int c = 0; c < 6; ++c)
        cout << *(numbers) << endl;

    return 0;
    }

它应该打印出 18, 12, 10, 9, 5, 1 但是当我运行程序时它只打印出 18, 18, 18, 18, 18, 18 我哪里出错了?我猜这是第一个 for 循环中的问题。谢谢你的帮助。

4

3 回答 3

4

改变cout << *(numbers) << endl;

cout << numbers[c] << endl;


加上使用头文件中的标准reverse算法:<algorithm>

  std::reverse(numbers, numbers+6);
于 2013-03-03T12:57:31.880 回答
2

这是第二个 for 循环,您忘记添加 c。

for(int c = 0; c < 6; ++c)
    cout << *(numbers + c) << endl;
于 2013-03-03T12:57:10.933 回答
0

你可以试试这个:

for(int i = 0; i < ARRAY_SIZE; ++i) {
    //a^=b^=a^=b; //SWAP a with b
    numbers[i] ^= numbers[ARRAY_SIZE-i] ^= numbers[i] ^= numbers[ARRAY_SIZE-i];
}

它将反转数组中的所有元素。:)

于 2013-03-03T14:05:30.997 回答