如何在数组中反向元素
How to reverse elements in an array?
,因此我给了我一个问题,希望我扭转数组中的元素。
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];
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 如何将元素添加到数组的线程安全函数?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输出没有重复元素的动态数组(收缩数组)C++
- 数组中最大的非重复元素
- 数组元素打印的递归方法
- 对字符数组中的元素执行逐位操作
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 通过交换元素使数组相同
- 按平均值替换数组中的元素
- 打印矢量数组中的所有元素
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何将元素从向量转移到新数组?
- 如何在向量数组中插入元素?
- 为什么 2 个相同数组的元素彼此相等
- C++ 中的二维整数数组,每行中的元素数量不均匀