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

如何将1到指定整数的所有数值依次存入C语言数组

你代码的问题点

  • 数组越界访问:C语言中长度为10的数组int array[10]的合法下标范围是0~9,你在while条件中访问array[10]属于越界读取,这块内存不属于当前数组,值是未定义的,无法作为循环终止的判断依据。
  • 循环逻辑错误:没有控制array_finished的上限,当它超过9之后,写入array[array_finished]会越界修改栈上其他内存,属于未定义行为,这也是你看到奇怪输出的核心原因之一。
  • 打印逻辑错误:printf("%d", array)中array是数组名,会自动退化为指向数组首地址的指针,你用%d格式符打印指针值,输出的自然是无意义的内存地址数值,想要输出数组的每个元素需要遍历数组逐个打印。

正确实现代码

#include <stdio.h>
int main()
{
    // 可以修改n的值来生成对应长度的1~n数组
    const int n = 10;
    int array[n];
    // 填充数组
    for(int i = 0; i < n; i++){
        array[i] = i + 1;
    }
    // 按要求格式打印数组
    printf("int array[] = {");
    for(int i = 0; i < n; i++){
        if(i > 0) printf(", ");
        printf("%d", array[i]);
    }
    printf("}\n");
    return 0;
}

运行上述代码会直接输出你需要的int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}格式的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:06:03