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

C++实现将0-100内被x整除的数插入数组,现有代码求优化思路

问题分析与实现方案

现有代码的问题

  • 不需要双重循环,两层循环会导致同一个符合条件的数值被重复赋值到多个数组位置,逻辑完全错误
  • 赋值语句误写为a[j] == i,==是比较运算符,不会完成赋值操作
  • 参数d是值传递,函数内部修改的d不会同步到主函数的原始变量,最终主函数打印时d还是初始值0,无任何输出
  • 循环范围错误:你需要0到100之间的数,现有代码i从1开始漏掉了0,i<100的判断又漏掉了100
  • 未处理x=0的异常场景,执行取模运算时会触发除以0错误

实现思路

思路1:遍历判断(最直观易写)

直接遍历0到100的所有整数,逐个判断是否能被x整除,符合条件就插入数组,同时计数。注意d要改成引用传递,才能把计数结果带回主函数,主函数调用逻辑无需修改。
正确代码示例:

// 第三个参数加&改成引用传递
void caricaArray(unsigned a[], unsigned x, unsigned &d) {
    if (x == 0) return; // 规避除以0错误
    d = 0; // 初始化计数
    for (int i = 0; i <= 100; i++) {
        if (i % x == 0) {
            a[d] = i;
            d++;
        }
    }
}

思路2:直接生成倍数(效率更高,无需取模判断)

不需要逐个遍历所有数,直接生成x的倍数:从0开始,每次加x,直到数值超过100为止,每生成一个就存入数组即可。
代码示例:

void caricaArray(unsigned a[], unsigned x, unsigned &d) {
    if (x == 0) return;
    d = 0;
    for (int i = 0; i <= 100; i += x) {
        a[d] = i;
        d++;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:00:01