双层for循环无输出求助:随机测试中双重求和实现问题
问题分析与修复方案
核心问题:无限循环导致程序无法执行到输出逻辑
你的内层for循环条件写错了,把判断j < 6写成了i < 6:
for (int j = 0; i < 6; j++) // 错误:这里应该是j < 6
这个错误会让内层循环永远不会终止——i在外层循环里从0到5,只要i < 6成立,内层循环就会一直执行j++,程序卡死在循环中,根本到不了后面的cout输出语句。
其他需要修复的问题
- 整数除法导致B数组全为0:
1 / 6这类表达式是整数除法,结果为0,需要改成浮点数除法才能得到正确的小数:float B[] = { 1.0f / 6, 5.0f / 24, 11.0f / 120, 19.0f / 720, 29.0f / 5040, 1.0f / 840 }; - 确认变量定义:代码中使用的
n和r数组需要确保已正确定义并初始化,比如n应该是一个合理的数值,r数组的元素要符合计算逻辑。
修复后的完整核心代码片段
int A[][6] = { {4529,9045,13568,18091,22615,2789}, {9045,18097,27139,36187,45234,55789}, {13568,27139,40721,54281,67825,83658}, {18091,36187,54281,72414,90470,111580}, {22615,45234,67852,90470,113262,139476}, {27892,55789,83658,111580,139476,172860} }; float B[] = { 1.0f / 6, 5.0f / 24, 11.0f / 120, 19.0f / 720, 29.0f / 5040, 1.0f / 840 }; float R = 0, temp1 = 0, temp2, temp3; // 修正内层循环条件 for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { temp2 = r[i] - (n * B[i]); temp3 = r[j] - (n * B[j]); temp1 += (A[i][j] * temp2 * temp3); } } R = temp1 / n; cout << "R= " << R;
内容的提问来源于stack exchange,提问作者aisha kh
相关产品推荐
相关产品推荐

