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; }
关键修改点
- 重置循环变量:第二组循环重新初始化
i为1,不再使用第一组的残留值。 - 用
num2控制循环:改用for循环(逻辑更直观),循环条件设为i <= num2,确保输出数量等于目标值。 - 固定
num2为32:直接赋值满足你需要的输出数量,若需随机范围可保留原num2生成逻辑,但必须用它控制循环。 - 移除冗余的
and i > 0判断,i从1开始,该条件永远成立。
内容的提问来源于stack exchange,提问作者GiGi
相关产品推荐
相关产品推荐

