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
相关产品推荐
相关产品推荐

