首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组中的元素反转的C++程序

将数组中的元素反转的C++程序
EN

Stack Overflow用户
提问于 2013-03-03 20:55:12
回答 3查看 1.9K关注 0票数 0

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

代码语言:javascript
复制
#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,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,我哪里出错了?我猜这是第一个for循环中的问题。谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-03 20:57:32

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

转到cout << numbers[c] << endl;

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

代码语言:javascript
复制
  std::reverse(numbers, numbers+6);
票数 4
EN

Stack Overflow用户

发布于 2013-03-03 20:57:11

这是第二个for循环,你忘了加c。

代码语言:javascript
复制
for(int c = 0; c < 6; ++c)
    cout << *(numbers + c) << endl;
票数 2
EN

Stack Overflow用户

发布于 2013-03-03 22:05:31

您可以尝试这样做:

代码语言:javascript
复制
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];
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15185880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档