如何在数组中反向元素

How to reverse elements in an array?

本文关键字:元素 数组      更新时间:2023-10-16

,因此我给了我一个问题,希望我扭转数组中的元素。

 void main() {
        int myarray[6] = { 12,45,23,123,23,27 };
        int arraylength = 6;
        int temp;
        for (int i = 0; i < arraylength/2; i++)
        {
            temp = myarray[i];
            myarray[i] = myarray[(arraylength - 1) - i];
            myarray[(arraylength - 1) - i] = temp;
            cout << temp;
        }
}

有人知道我出了什么问题吗?我似乎无法使它起作用了一段时间

预期输出为(27,23,123,23,45,12(

您的程序正常工作,无法使用的是您的输出。您需要添加一个循环,该循环打印已经反向数组的所有元素:

for (int i = 0; i < 6; ++i)
{
   cout << myarray[i] << " ";
}

在此处在线尝试

,对于更新的循环,您需要打印myarray[i],而不是temp。而且它不会很有用,因为您的循环仅通过一半的元素迭代

您的程序正确,但您应该使用循环打印所有元素:

for(auto x : myarray)
    srd::cout << x << ", ";

您也可以使用std::reverse

将其逆转
int myarray[] {12, 45, 23, 123, 23, 27 };
std::reverse(std::begin(myarray), std::end(myarray));
for(auto e : myarray) 
    std::cout << e << ", ";

逆转算法本身很好,它旋转中心周围的所有元素,从而逆转数组。它等效于使用std::swap函数:

for (int i = 0; i < arraylength / 2; i++) {
    std::swap(myarray[i], myarray[arraylength - i - 1]);
}

但是,您正在打印元素先验以逆转数组。而且,由于i < arraylength / 2条件,您只需要一半时间。首先反向阵列并引入第二个for循环以打印:

for(auto el : myarray)
    std::cout << el << ' ';

或简单地使用std ::反向,让标准库进行繁重的举重:

#include <iostream>
#include <algorithm>
int main() {
    int myarray[] = { 12, 45, 23, 123, 23, 27 };
    std::reverse(std::begin(myarray), std::end(myarray));
    for (auto el : myarray) {
        std::cout << el << ' ';
    }
}

myarray[(arraylength - 1) - i];中的括号是过分的。您可以删除这些并具有myarray[arraylength - i - 1];