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

如何将数组按大小为5的子块打印?原代码仅输出前5个元素

数组按固定大小子块打印的代码修正

原代码存在几个关键问题,导致仅输出前5个元素:

  • 内层循环终止条件错误,固定写ii < 5只会遍历数组前5个元素,未结合当前子块的起始位置
  • 外层循环遍历逻辑错误,无需遍历数组所有元素,应按子块数量循环
  • 存在变量名拼写错误(ind应为in)
  • 未处理最后一个不足5个元素的子块的边界问题

修改后的代码如下:

int arr[298] = {some int values};
int in = 0;
int siz = 298;
int ii;
int rang = 5;
// 按子块数量循环,(siz + rang -1)/rang 可计算总块数,这里直接用in迭代更直观
for (; in < siz; in += rang) {
    // 内层循环遍历当前子块,取当前块结束位置和数组长度的最小值,避免越界
    for (ii = in; ii < in + rang && ii < siz; ii++) {
        printf("arr=%d\n", arr[ii]);
    }
    printf("------------\n");
}

关键修改点说明:

  • 外层循环直接用in作为迭代变量,每次递增rang(5),直到in超出数组长度,刚好覆盖所有子块
  • 内层循环终止条件改为ii < in + rang && ii < siz,既保证每个子块最多5个元素,又能正确处理最后一个不足5个元素的子块
  • 修正了变量名拼写错误,将ind改为in
  • 移除了冗余的外层循环计数器i,简化代码逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:03:31