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

C++计数排序代码修改后无输出及clock计时失效问题咨询

计数排序代码问题解答

1. 两份错误代码无输出的原因

两份错误代码和你所说的「原始正确代码」都存在同一个致命的数组越界错误,直接导致程序提前崩溃终止,走不到文件输出的逻辑:

  • 计数数组count的大小是max - min + 1,本题待排序数据范围为0~9999,因此count数组长度仅为10000。但三份代码的前缀和计算循环都错误地设置了上限为len = 100000,当循环变量i >= 10000时,访问count[i]属于越界访问内存,触发操作系统的段错误保护,程序被直接杀死,后续的文件写入逻辑完全不会执行,因此没有输出。
    • 错误代码1的文件写入逻辑在越界循环之后,程序崩溃时还没执行到打开输出文件、写入数据的步骤。
    • 错误代码2的文件写入逻辑在main函数中,位于count_sort调用之后,程序在count_sort内部的越界循环处就已经崩溃,根本不会执行到main里的写入逻辑。

补充说明:你所说的「原始正确代码运行结果无误」不符合代码逻辑,大概率是测试时数据范围、长度参数有误,按照你给出的参数该代码必然触发越界崩溃。

2. 所有代码中clock计时语句无法生效的原因

所有代码的计时输出语句都位于数组越界循环的下游:

  • 原始代码的计时语句在count_sort函数的末尾,处于越界前缀和循环之后,程序在越界访问时已经崩溃,不会执行到该行。
  • 错误代码1、2的计时语句在main函数末尾,同样在越界循环执行之后,程序提前终止导致该行永远不会被执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:04