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

向有序数组插入数字并排序的C语言代码运行结果异常问题咨询

已排序数组插入指定元素的代码问题修复

存在的问题

  • 插入值赋值错误:for循环初始化部分写的是a[6] == 21,这是相等判断操作,不是赋值操作,导致你要插入的21根本没有写入数组,a[6]仍保持初始化的0值,这是输出开头出现0的核心原因。
  • 循环判断顺序存在越界风险:现有循环条件a[i] <a[i-1] && i > 0会先访问数组元素再判断i是否合法,当i递减到0时,会先执行a[i] <a[i-1]访问a[-1],触发数组越界,属于未定义行为。

修复后的代码

int a[10] = {20, 22, 23, 24, 25, 26}, i, t, n;
// 先给插入位置赋值要插入的21,再从该位置向前冒泡调整
for(i=6, a[6] = 21; i > 0 && a[i] < a[i-1]; i--)
{
    t = a[i];
    a[i] = a[i-1];
    a[i-1] = t;
}
for(n = 0; n < 10; n++)
    printf("%4d",a[n]);
printf("\n");
return 0;

输出结果

修复后运行输出为: 20 21 22 23 24 25 26 0 0 0,符合预期的有序插入效果。

内容的提问来源于stack exchange,提问作者灰原哀

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:24:02