我编写了这段代码来尝试反转给定数组中的元素:
#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循环中的一个问题。 谢谢你的帮助。
答案 0 :(得分:4)
更改cout << *(numbers) << endl;
到cout << numbers[c] << endl;
加上使用reverse
头文件中的标准<algorithm>
算法:
std::reverse(numbers, numbers+6);
答案 1 :(得分:2)
这是循环的第二个,你忘了添加c。
for(int c = 0; c < 6; ++c)
cout << *(numbers + c) << endl;
答案 2 :(得分: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];
}
它将反转数组中的所有元素。 :)