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

如何用C语言循环实现数组按指定数量展开?

用循环实现数组展开的解决方案

你可以通过嵌套循环来实现这个需求,外层循环遍历element数组的每个元素,内层循环根据quantity数组对应的次数重复填充结果数组。以下是完整的实现代码:

#include <stdio.h>

int main() {
    int element[3] = {0, 1, 2};
    int quantity[3] = {2, 3, 4};
    
    // 计算结果数组的总长度
    int total_length = 0;
    for (int i = 0; i < 3; i++) {
        total_length += quantity[i];
    }
    
    // 初始化结果数组(这里使用变长数组,C99及以上支持)
    int result[total_length];
    int current_pos = 0; // 记录结果数组当前填充的位置
    
    // 外层循环遍历每个待填充的元素
    for (int i = 0; i < 3; i++) {
        // 内层循环按指定次数重复填充当前元素
        for (int j = 0; j < quantity[i]; j++) {
            result[current_pos++] = element[i];
        }
    }
    
    // 验证输出结果
    printf("结果数组:");
    for (int i = 0; i < total_length; i++) {
        printf("%d ", result[i]);
    }
    printf("\n");
    
    return 0;
}

关键步骤说明

  • 计算总长度:先遍历quantity数组累加所有元素值,确定结果数组的大小,避免数组越界。
  • 双循环填充:外层循环逐个取出element中的元素,内层循环根据quantity对应的次数,将当前元素重复写入结果数组的对应位置,同时用current_pos变量跟踪填充的位置,确保每个元素都被放到正确的位置。
  • 兼容性调整:如果你的编译器不支持变长数组(比如遵循C89标准),可以改用动态内存分配:
    // 替换变长数组的定义
    int *result = (int *)malloc(total_length * sizeof(int));
    // 使用完成后记得释放内存
    free(result);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:45:49