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

C++ 填充随机数矩阵时循环提前退出仅生成3行问题咨询

问题原因
  • 行列索引逻辑颠倒:你定义的数组lust[lsy][lsx]中,lsy=10是行数,lsx=3是列数,外层循环变量i是行索引,内层循环变量l是列索引。你当前只对i=0/1/2这前三行的元素做了随机数赋值,剩下i=3~9共7行的元素未重新赋值,始终保持初始化的0值,因此看起来只有3行有效数据。
  • 列范围判断逻辑错误:你需要的是每列有独立取值范围,应该判断列索引l的取值,而非行索引i。比如l=0对应第一列用flx取余,l=1对应第二列用fly取余,l=2对应第三列用shpp取余,这样整列的取值规则统一。
  • 原代码中未定义flx、fly两个变量,仅声明了shpp=7,如果实际运行时未补充这两个变量的定义,会直接编译报错。
修正后的核心代码示例
// 补全缺失的变量定义,可根据需求调整取值
int flx = 10;
int fly = 5;
int lsx = 3;
int lsy = 10;
int lust[lsy][lsx];
int i = 0;
int l = 0;
int shpp = 7;
// 初始化数组
for (i = 0; i < lsy; i++)
{
    for (l = 0; l < lsx; l++)
    {
        lust[i][l] = 0;
    }
}
while (true)
{
    // 生成随机数填充,按列设置范围
    for (i = 0; i < lsy; i++)
    {
        for (l = 0; l < lsx; l++)
        {
            // 第一列
            if (l == 0)
            {
                lust[i][l] = rand() % flx;
            }
            // 第二列
            else if (l == 1)
            {
                lust[i][l] = rand() % fly;
            }
            // 第三列
            else if (l == 2)
            {
                lust[i][l] = rand() % shpp;
            }
            cout << lust[i][l] << " ";
        }
        cout << "\nEndline reached! \n\n";
    }
    // 打印完整数组
    cout << "完整数组输出:\n";
    for (i = 0; i < lsy; i++)
    {
        for (l = 0; l < lsx; l++)
        {
            cout << lust[i][l] << " ";
        }
        cout << "\n";
    }
    // 可删除下面的break,或加延迟逻辑避免死循环输出过快
    break;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:07