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

C语言中如何向数组添加元素?求修正存储可被5整除元素索引的代码

问题分析与代码修正

原代码存在的问题

  • 数组越界访问:index[10] += i; 是非法操作,index数组长度为10,合法下标范围是0到9,访问下标10会导致内存越界,引发未定义行为。
  • 缺少索引存储计数器:没有变量跟踪index数组的当前存储位置,无法将符合条件的索引正确存入数组。
  • 错误的输出方式:直接打印数组名index,实际输出的是数组的首地址,而非存储的索引值。

修正后的代码

#include <stdio.h>

#define N 10

int main()
{
    int a[N];
    int i;
    int index[N];
    int count = 0; // 记录符合条件的索引数量,同时作为index数组的存储下标

    printf("Input %d values into the array:\n", N);
    for (i = 0; i < N; i++){
        scanf("%d", &a[i]);
        if (a[i] % 5 == 0){
            index[count] = i; // 将符合条件的索引存入index数组
            count++; // 计数器自增,准备下一个存储位置
        }
    }

    printf("能被5整除的元素的索引:\n");
    for (i = 0; i < count; i++){
        printf("%d ", index[i]);
    }
    printf("\n");
    return 0;
}

修正说明

  • 新增count变量,初始值为0,既用来统计符合条件的索引总数,也作为index数组的动态下标,确保每个符合条件的索引都能被正确存入数组的对应位置。
  • 将原代码中错误的index[10] += i;替换为index[count] = i;,并在每次存储后自增count。
  • 输出时通过循环遍历count次,只打印index数组中存储的有效索引,避免输出未初始化的垃圾值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:35:24