You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于临时数组实现数组反转的C++程序错误排查咨询

排查你的数组反转C++代码错误

让我帮你梳理下代码里的问题,这段代码主要有三个关键错误导致反转功能失效:

  • 嵌套循环逻辑完全错误:你在reverse函数里用了两层嵌套的for循环,外层i从0到9,内层j从9到0。这会导致每次外层循环时,arr[i]会被重复赋值给revarray的所有位置——比如当i=9时,最后一次循环会把arr[9]覆盖掉revarray的所有元素,最终临时数组里全是原数组的最后一个元素,完全达不到反转的效果。正确的做法是用单层循环,直接把原数组的第i个元素对应赋值到临时数组的9-i位置(因为数组下标从0开始,总长度10)。

  • 变量名拼写错误:你定义的临时数组叫revarray,但输出的时候写的是revarray1,这会直接导致编译错误,编译器找不到这个不存在的变量。

  • 可选优化:未修改原数组(按需选择):你的reverse函数只是输出临时数组,如果后续业务需要使用反转后的原数组,当前逻辑无法满足。不过如果只是需要输出反转结果,修正前两个问题就足够。


修正后的代码

#include<iostream>
using namespace std;

void reverse(int arr[]) {
    int revarray[10];
    // 单层循环实现正确的反转映射
    for(int i=0;i<10;i++) {
        revarray[9 - i] = arr[i];
    }
    // 修正变量名拼写错误
    for(int k=0;k<10;k++) {
        cout<<revarray[k]<<" ";
    }
}

int main() {
    int arr[10];
    cout<<"Enter the elements of array"<<endl;
    for(int i=0;i<10;i++) {
        cin>>arr[i];
    }
    reverse(arr);
    return 0; // 补充main函数的标准返回值
}

额外优化:无需临时数组的原地反转

如果想节省内存,可以直接在原数组上进行元素交换,不需要额外的临时数组:

void reverse(int arr[]) {
    // 只需要循环前5个元素,和对应的后5个元素交换
    for(int i=0;i<5;i++) {
        int temp = arr[i];
        arr[i] = arr[9 - i];
        arr[9 - i] = temp;
    }
    // 输出已经被反转的原数组
    for(int k=0;k<10;k++) {
        cout<<arr[k]<<" ";
    }
}

内容的提问来源于stack exchange,提问作者NoobMaster_69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:22:31