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

自定义排序算法无输出但退出码为0,请求故障排查(附代码)

问题分析与修复

你的代码核心问题是数组越界访问,这属于C++中的未定义行为,可能导致程序看似正常结束但没有预期输出,甚至出现其他异常。具体错误点和修复方式如下:

错误点

  1. 内层循环边界错误:
    内层循环for(int j=i+1; j<=n; j++)中,j<=n会让j取值到7,但你的数组有效元素只有7个(索引0到6),访问a[7]属于越界访问未初始化的内存。
  2. 输出循环边界错误:
    输出循环for(int x=0; x<=n; x++)同样会访问a[7],进一步加剧越界问题。

修复后的代码

#include <iostream>
using namespace std;

void sortAlgo(int *a, int n){
    int tmp;
    // 外层循环遍历所有有效元素
    for (int i=0; i < n; i++){
        // 内层循环从i的下一个元素开始,遍历到最后一个有效元素
        for(int j=i+1; j < n; j++){ 
            if(a[i]>a[j]){
                tmp=a[i];
                a[i]=a[j];
                a[j]=tmp;
            }
        }
    }
    // 输出所有有效排序后的元素
    for(int x=0; x < n; x++){
        cout<<a[x]<<" ";
    }
    // 刷新输出缓冲区,确保内容正常显示
    cout << endl;
}

int main(){
    int arr[10]={1,2,3,5,23,12,4};
    sortAlgo(arr, 7);
}

修复说明

  • 将所有循环的边界条件从<=n或<=n-1改为<n,确保只访问数组的有效索引范围(0到n-1)。
  • 添加cout << endl;强制刷新输出缓冲区,避免因缓冲区未刷新导致的无输出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:10:29