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

C++ for循环计数超出限制:骰子组合计算出现非法7值问题

问题排查结果

核心问题是你在循环作用域外访问了迭代变量,此时迭代变量已经超出了你预设的1~6取值范围,具体原因如下:

  • C++中for循环的执行逻辑为:先执行初始化语句,之后每次循环先判断条件是否成立,成立则执行循环体,执行完成后运行迭代语句(如k3++),再次判断条件。你设置k3的循环条件为k3<=6,当k3自增到7时条件不成立,退出最内层循环,此时k3的实际值为7。
  • 你在k3的循环结束后,额外在k2循环体内、k1循环体内各写了一处判断和输出逻辑,这两个位置的k3已经是超出有效范围的7;同理当k2循环完全退出时,k2也会自增到7,就会出现2-7-7这类无效输出。
修正方案

删除k3循环外的两处多余判断逻辑即可,修正后代码如下:

for (k1 = 1; k1 <= 6; k1++) //k1 - die 1
{
    for (k2 = 1; k2 <= 6; k2++) //k2 - die 2
    {
        for (k3 = 1; k3 <= 6; k3++) //k3 - die 3
        {
            if (k1+k2+k3 == z) //z - sum
                cout<<k1<<"-"<<k2<<"-"<<k3<<endl;
        }
    }
}
验证结果

以z=16为例,修正后正确的有效输出为:

4-6-6
5-5-6
5-6-5
6-4-6
6-5-5
6-6-4

所有输出的骰子取值都在1~6范围内,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:03