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

C++程序第二组输出仅18个,需输出32个的问题排查求助

问题排查与修复

你的代码第二组输出数量不符的核心问题有两个:

  • 未用num2控制循环次数:你生成了num2变量,但第二个循环完全没用到它,反而沿用了第一个for循环结束后遗留的i值继续累加,直到i <= 50,输出数量自然不是你需要的32个。
  • 循环变量未重置:第一个for循环结束后,i的值是num1 + 1(num1范围是1-25),从这个值开始到50的循环次数远小于32。

修复后的代码

#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;

#define max_value_num1 5
#define max_value_num2 6
#define max_value_num3 7
#define max_value_size1 25
#define max_value_size2 50
#define max_value_size3 250

int main()
{
    int num1, num2, num3;

    srand(23);
    num1 = 1 + (rand() % (25 - 1 + 1));

    cout << "First set of numbers: " << num1 << " values" << endl;
    int i;

    for (i = 1; i <= num1; i++)  
    {
        cout << setw(12) << right;

        if (i % max_value_num1 == 1)
        {
            cout << endl;
        }

        cout << rand() << " ";
    }

    // 固定输出32个,若需随机范围可保留原num2生成逻辑
    num2 = 32;

    cout << endl << endl << "Second set of numbers: " << num2 << " values" << endl;

    // 重置循环变量,用num2控制输出数量
    for (i = 1; i <= num2; i++)  
    {
        cout << setw(12) << right;
        cout << rand() << " ";

        if (i % max_value_num2 == 0) 
        {   
            cout << endl;
        }
    }
    return 0;
}

关键修改点

  1. 重置循环变量:第二组循环重新初始化i为1,不再使用第一组的残留值。
  2. 用num2控制循环:改用for循环(逻辑更直观),循环条件设为i <= num2,确保输出数量等于目标值。
  3. 固定num2为32:直接赋值满足你需要的输出数量,若需随机范围可保留原num2生成逻辑,但必须用它控制循环。
  4. 移除冗余的and i > 0判断,i从1开始,该条件永远成立。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:45:34