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

C语言9元素数组逆序打印时出现多余随机值的原因与修复

问题产生原因

你定义的int a[9]是长度为9的整型数组,合法的下标访问范围是0~8。你最后打印数组的循环条件写为i<10,会执行10次打印操作,第10次访问的a[9]已经超出了数组的合法内存边界,属于数组下标越界访问。
C语言本身默认不会做数组下标越界校验,越界访问到的是数组后方相邻的未知内存区域,这块区域的数值是未初始化的随机垃圾值,你输出里看到的32765就是这块内存的残留数据。

修复方案

只需要将打印循环的终止条件修改为和数组长度匹配即可,同时可以删掉你代码里没用的int n=10冗余代码,或者把n改为9作为统一的长度边界方便后续维护。
修复后的参考代码如下:

/*This is a c program that inputs an array of 9 numbers, reverses it and prints it*/
#include <stdio.h>
int main()
{
    // 定义常量存储数组长度,后续修改更便捷
    const int ARRAY_LEN = 9;
    int a[ARRAY_LEN]; 
    
    printf("Enter 9 numbers \n");
    int i;
    for(i=0; i < ARRAY_LEN; i++)
    {
        scanf("%d",&a[i]);
    }
    
    int t;
    for(i=0; i < ARRAY_LEN/2; i++)
    {
        t = a[i];
        a[i] = a[ARRAY_LEN - 1 -i];
        a[ARRAY_LEN - 1 -i] = t;
    }
    
    // 打印循环边界和数组长度保持一致
    for(i=0; i < ARRAY_LEN; i++)
    {
        printf("%d\t",a[i]);
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:45:03